学科分类
目录
Java Web

HTTP请求行

HTTP请求行位于请求消息的第一行,它包括三个部分,分别是请求方式、资源路径以及所使用的HTTP协议版本,具体示例如下:

GET /index.html HTTP/1.1

上面的示例就是一个HTTP请求行,其中GET是请求方式,index.html是请求资源路径,HTTP1.1是通信使用的协议版本。需要注意的是,请求行中的每个部分需要用空格分隔,最后要以回车换行结束。

关于请求资源和协议版本,大家都比较容易理解,而HTTP请求方式对大家来说比较陌生,接下来就针对HTTP的请求方式进行具体分析。

在HTTP的请求消息中,请求方式有GET、POST、HEAD、OPTIONS、DELETE、TRACE、PUT和CONNECT八种,每种方式都指明了操作服务器中指定URI资源的方式,它们表示的含义如表1所示。

​ 表1 HTTP八种请求方式

请求方式 含义
GET 请求获取请求行的URI所标识的资源
POST 向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)
HEAD 请求获取由URI所标识资源的响应消息头
PUT 将网页放置到指定URL位置(上传/移动)
DELETE 请求服务器删除URI所标识的资源
TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

表1中列举了HTTP的八种请求方式,其中最常用的就是GET和POST方式,接下来,针对这两种请求方式进行详细讲解,具体如下所示:

1、GET方式

当用户在浏览器地址栏中直接输入某个URL地址或者单击网页上一个超链接时,浏览器将使用GET方式发送请求。如果将网页上的form表单的method属性设置为“GET”或者不设置method属性(默认值是GET),当用户提交表单时,浏览器也将使用GET方式发送请求。

如果浏览器请求的URL中有参数部分,在浏览器生成的请求消息中,参数部分将附加在请求行中的资源路径后面。先来看一个URL地址,具体如下:

http://www.itcast.cn/javaForum?name=lee&psd=hnxy

在上述URL中,“?”后面的内容为参数信息。参数是由参数名和参数值组成的,并且中间使用等号(=)进行连接。需要注意的是,如果URL地址中有多个参数,参数之间需要用“&”分隔。

当浏览器向服务器发送请求消息时,上述URL中的参数部分会附加在要访问的URI资源后面,具体如下所示:

GET /javaForum?name=lee&psd=hnxy HTTP/1.1

需要注意的是,使用GET方式传送的数据量有限,最多不能超过1KB。

2、POST方式

如果网页上form表单的method属性设置为“POST”,当用户提交表单时,浏览器将使用POST方式提交表单内容,并把各个表单元素及数据作为HTTP消息的实体内容发送给服务器,而不是作为URI地址的参数传递。另外,在使用POST方式向服务器传递数据时,Content-Type消息头会自动设置为“application/x-www-form-urlencoded”,Content-Length消息头会自动设置为实体内容的长度,具体示例如下:

POST /javaForum HTTP/1.1
Host: www.itcast.cn
Content-Type: application/x-www-form-urlencoded
Content-Length: 17
name=lee&psd=hnxy 

对于使用POST方式传递的请求信息,服务器端程序会采用与获取URI后面参数相同的方式来获取表单各个字段的数据。

需要注意的是,在实际开发中,通常都会使用POST方式发送请求,其原因主要有两个,具体如下:

1)POST传输数据大小无限制

由于GET请求方式是通过请求参数传递数据的,因此最多可传递1KB的数据。而POST请求方式是通过实体内容传递数据的,因此可以传递数据的大小没有限制。

2)POST比GET请求方式更安全

由于GET请求方式的参数信息都会在URL地址栏明文显示,而POST请求方式传递的参数隐藏在实体内容中,用户是看不到的,因此,POST比GET请求方式更安全。

点击此处
隐藏目录