HTTP请求

发布时间 2023-06-06 15:48:09作者: 鹿先森JIAN

超文本传输协议(HTTP, HyperText Transfer Protocol)是一种无状态的协议,它位于OSI七层模型的传输层。

HTTP客户端会根据需要构建合适的HTTP请求方法,而HTTP服务器会根据不同的HTTP请求方法做出不同的响应。

HTTP请求是客户端发给服务器端的请求消息。请求信息不仅包含客户端要访问的信息,还包含客户端的配置信息以及传输方式信息。服务器端根据这些请求信息,决定如何向客户端返回信息。

HTTP请求的构成

HTTP请求消息由3部分构成,分别是请求行、请求头、请求体。如图

1、请求行

请求行分为三个部分:请求方法请求地址URLHTTP协议版本

请求方法

GET:用于使用给定的URI从给定服务器中检索信息,即从指定资源中请求数据。使用GET方法的请求应该只是检索数据,并且不应对数据产生其他影响。

GET请求参数放在URL里(在浏览器地址栏中可以直接看到),但URL有长度限制(每个浏览器不同),参数数量不能过多

GET请求是可以缓存的,我们可以从浏览器历史记录中查找到GET请求

POST:向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。请求数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。

POST请求永远不会被缓存,且对数据长度没有限制;我们无法从浏览器历史记录中查找到POST请求。

PUT:PUT请求会身向指定资源位置上传其最新内容,PUT方法是幂等的方法。通过该方法客户端可以将指定资源的最新数据传送给服务器取代指定的资源的内容。

DELETE:用于请求服务器删除所请求URI(统一资源标识符,Uniform Resource Identifier)所标识的资源。DELETE请求后指定资源会被删除,DELETE方法也是幂等的。

OPTIONS:一般用于客户端查看服务器的性能。这个方法会请求服务器返回该资源所支持的所有HTTP请求方法,该方法会用 '*' 来代替资源名称,向服务器发送OPTIONS请求,可以测试服务器功能是否正常。

JavaScript的XMLHttpRequest对象进行CORS跨域资源共享时,就是使用OPTIONS方法发送嗅探请求,以判断是否有对指定资源的访问权限。

HEAD:类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头。

CONNECT:该方法是HTTP/1.1协议预留的,能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接与非加密的HTTP代理服务器的通信。

TRACE:该方法请求服务器回显其收到的请求信息,该方法主要用于HTTP请求的测试或诊断。

请求地址URL

HTTP协议版本

HTTP/0.9:这是HTTP最早大规模使用的版,现已过时。在这个版本中 只有GET一种请求方法,在HTTP通讯也没有指定版本号,也不支持请求头信息。

HTTP/1.0:支持 GET、POST、HEAD三种HTTP请求方法。

HTTP/1.1:新增了 OPTIONS、PUT、DELETE、TRACE、CONNECT五种HTTP请求方法。该版本默认采用持久连接,并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度。

2、请求头

 

3、请求体