HTTP协议基础
HTTP请求由3部分组成,分别是请求行、消息报头、请求正文。
1. HTTP协议请求行
请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:
Method Request-URI HTTP-Version CRLF
-
"Method"表示请求方法,通常有get,post,put等等。
- get方法:是默认的HTTP请求方法,通常用get提交的表单数据只经过了简单的编码,同时作为URL的一部分向web服务器发送,因此存在着安全隐患。
例如:“http://login.test.com?username=admin&password=admin” - post方法:是get方法的一个替代方法,主要用于向web服务器提交表单数据,尤其是大量的数据。通过post方法提交表单数据时,数据不是作为URL请求的一部分,而是作为标准数据传送给web服务器,克服了get方法无法保密和提交数据量太小的缺点。
- get方法:是默认的HTTP请求方法,通常用get提交的表单数据只经过了简单的编码,同时作为URL的一部分向web服务器发送,因此存在着安全隐患。
-
"Request-URI"是一个统一资源标识符。
-
HTTP-Version"表示请求的HTTP协议版本。
-
"CRLF"表示回车和换行(除了作为结尾的“CRLF”外,不允许出现单独的“CR”或“LF”字符)。
举个栗子,采用GET方法向服务器获取资源:Get /form.html HTTP/1.1 (CRLF)
2. HTTP协议消息报头
HTTP消息包括请求消息和响应消息,作为模糊测试数据构造,我们仅仅关心请求消息,因此只简单介绍请求消息的报头。
请求报头允许客户端向服务器传递请求的附加信息和客户端的自身信息,报头定义如下:
名字+":"+空格+值。
- 消息报头的名字是大小写无关的。
- Accept 请求用于指定客户端接受哪些类型的信息。
- Accept-Encoding 请求报头用于指定可接受的内容编码。
- Cookie 用于客户端向服务器提交cookie信息验证。
- Accept-Language 用于指定一种自然语言。
- Authorization 用于证明客户端有权限查看某个资源。
- Host 用于指定被请求资源的主机和端口号。
- User-Agent 用于把自己的操作系统、浏览器等属性告诉服务器。
3.HTTP协议请求正文
请求头和请求正文之间是一个空行,空行表示请求头已经结束,接下来的是请求正文。
举个栗子:“username=admin&password=admin”