📜  HTTP请求

📅  最后修改于: 2021-01-03 03:05:50             🧑  作者: Mango

HTTP请求

HTTP请求是由客户端或用户发送以在服务器上启动操作的消息。

消息的第一行包括从客户端到服务器的请求消息,应用于资源的方法,资源的标识符以及协议版本。

句法

Request       = Request-Line              
                *(( general-header      
                | request-header         
                | entity-header ) CRLF)  
                 CRLF
                [ message-body ]

请求线

请求行以方法令牌开始,其后是请求URI,协议版本,并以CRLF结尾。使用SP字符可分隔元素。

句法

Request-Line   = Method SP Request-URI SP HTTP-Version CRLF

1)方法

方法令牌用于指示对Request-URI标识的资源执行的方法。该方法区分大小写。

句法

Method = "OPTIONS"                
         | "GET"                    
         | "HEAD"                   
         | "POST"                  
         | "PUT"                   
         | "DELETE"                
         | "TRACE"                 
         | "CONNECT"                
         | extension-method
       extension-method = token

允许资源使用方法列表,并且可以在Allow标头字段中指定方法。响应的返回代码始终通知客户端当前是否允许在资源上使用方法。由于允许的方法集可以动态更改。

方法和说明:

i)获取

此方法使用给定的URI从给定的服务器检索信息。 GET请求可以检索数据。它不能对数据施加其他影响。

ii)头

HEAD方法与GET方法相同。它仅用于传输状态行和标题部分。

iii)开机自检

POST请求将数据发送到服务器。例如,使用HTML表单的文件上传,客户信息等。

iv)放置

PUT方法用于用上载的内容替换目标资源的所有当前表示形式。

v)删除

DELETE方法用于删除目标资源的所有当前表示形式,该表示形式由URI给出。

vi)连接

CONNECT方法用于建立到服务器的隧道,该隧道由给定的URI标识。

2)返回URI

Request-URI是统一资源标识符。它用于标识在其上应用请求的资源。

句法

Request-URI = "*" | absoluteURI | abs_path | authority

根据请求的性质,这四个用于Request-URI的选项取决于。

a)星号“ *”用于表示该请求不适用于特定资源,但是将适用于服务器本身。仅当使用的方法不一定适用于资源时才允许使用。

选项* HTTP / 1.1

b)仅在向代理发出请求时才使用absoluteURI形式。请求的代理用于转发请求并返回响应。

GET http://www.javatpoint.com/WWW/TheProject.html HTTP / 1.1

c)绝对路径不能为空。如果在原始URI中没有任何内容,则必须将其指定为“ /”。

d)授权表仅由CONNECT方法使用。

请求标识的资源

使用Request-URI和Host标头字段的检查,我们可以确定Internet请求标识的确切资源。

如果原始服务器确实根据请求的主机进行区分,则原始服务器必须使用以下规则来确定HTTP / 1.1请求上的请求资源。

  • 如果Request-URI是absoluteURI,则主机将成为Request-URI的一部分。
  • 如果Request-URI不是absoluteURI,则主机将由主机标头字段值确定,并且请求包括主机的标头字段。
  • 如果规则1或2确定的主机不是服务器上的有效主机,则响应必须为400(错误请求)错误消息。

请求标头字段

请求标头字段用于允许客户端将其他信息(如请求和客户端本身)传递到服务器。请求标头字段用作请求修饰符,其语义等效于编程语言方法调用中的参数。

句法

request-header = Accept                   
                      | Accept-Charset          
                      | Accept-Encoding          
                      | Accept-Language          
                      | Authorization            
                      | Expect                  
                      | From                     
                      | Host                    
                      | If-Match                 
                      | If-Modified-Since      
                      | If-None-Match           
                      | If-Range              
                      | If-Unmodified-Since     
                      | Max-Forwards            
                      | Proxy-Authorization     
                      | Range                   
                      | Referer                 
                      | TE                      
                      | User-Agent 

只有与协议版本的更改结合使用,才能可靠地扩展请求标头字段的名称。