简述HTTP协议

简述HTTP协议

是什么

HTTP(超文本传输协议)是一个基于请求与响应模式、无状态、应用层的协议,常基于TCP的链接方式,1.1版本中给出的一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP之上的Web应用。

超文本传输​​协议(HTTP)的目的是使客户端和服务器之间的通信。

HTTP作品作为客户端和服务器之间的请求 - 响应协议。

Web浏览器可能是客户端,托管网站可能是服务器的计算机上的应用程序。

组成

分别由:请求头、消息头、请求正文

常用的HTTP方法

GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器。

POST: 用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。

PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。

HEAD: 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。

DELETE: 删除文件,与PUT方法相反,删除对应URI位置的文件。

OPTIONS: 查询相应URI支持的HTTP方法。

GET方法

得到的是用于从指定的资源请求数据。

GET 是最常见的HTTP方法之一。

注意查询字符串(名称/值对)的GET请求的URL发送:

1
/api/index.html?name1=value1&name2=value2

在GET请求其他一些注意事项:

  • GET请求可以被缓存
  • GET请求留在浏览器历史记录
  • GET请求可以添加书签
  • 获取有关敏感数据处理请求时,绝对不能用
  • GET请求有长度限制
  • GET请求仅用于请求数据(不能修改)

POST方法

POST用于将数据发送到服务器,创建/更新资源。

发送到与POST服务器的数据被存储在HTTP请求的请求体:

POST /test/demo_form.php HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2
POST是最常见的HTTP方法之一。

在POST请求的一些其他注意事项:

  • POST请求不会被缓存
  • POST请求不留在浏览器历史记录
  • POST请求不能被收藏
  • POST请求对数据长度没有限制

PUT方法

PUT用于将数据发送到服务器,创建/更新资源。

POST和PUT之间的区别是,PUT请求是幂等。也就是说,调用相同PUT请求多次,总是会产生相同的结果。相比之下,重复调用一个POST请求有多次创建相同的资源的副作用。

HEAD方法

HEAD几乎是相同的GET,但是没有响应体。

换句话说,如果GET /用户返回用户的列表,然后头/用户会提出同样的要求,但不会返回用户列表。

HEAD请求是检查什么的GET请求实际上将一个GET请求之前返回有用 - 下载大型文件或响应体之前等。

Delete方法

Delete方法删除指定的资源。

OPTIONS方法

选项方法描述了目标资源的通讯选择。

GET和POST方法的区别

  1. GET重点在从服务器上获取资源,POST重点在向服务器发送数据;

  2. GET传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用”?”连接,多个请求数据间用”&”连接如http://127.0.0.1/Test/login.action?name=admin&password=admin ,这个过程用户是可见的;POST传输数据通过HTTP的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的;

  3. GET传输的数据量小,因为受URL长度限制,但效率较高;POST可以传输大量数据,所以上传文件时只能用post方式;

  4. GET是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;POST较get安全性较高;

  5. GET方式只能支持ASCII字符,向服务器传的中文字符可能会乱码;POST支持标准字符集,可以正确传递中文字符。

HTTP请求报文的与响应报文格式

请求报文三部分:

  1. 请求行:包含HTTP版本、状态码、状态码的原因短语

  2. 请求首部字段

  3. 请求内容实体

响应报文三部分:

  1. 状态行:包含HTTP版本、状态码、状态码的原因短语

  2. 响应首部字段

  3. 响应内容实体