详情见:https://www.cnblogs.com/foodoir/p/5911099.html
https://baike.baidu.com/item/http%E8%AF%B7%E6%B1%82%E5%A4%B4/6623287?fr=aladdin
一个HTTP请求报文由 请求行(request line)、请求头部(headers)、空行(blank line)和请求数据(request body)4个部分组成。
请求行:
请求行分为三个部分:请求方法、请求地址URL和HTTP协议版本,它们之间用空格分割。例如,GET /index.html HTTP/1.1
请求方法:
get:(获取资源)
当客户端要从服务器中读取文档时,当点击网页上的链接或者通过在浏览器的地址栏输入网址来浏览网页的,使用的都是GET方式。GET方法要求服务器将URL定位的资源放在响应报文的数据部分,会送给客户端。使用GET方法时,请求参数和对应的值附加在URL后面,利用一个问号‘?’代表URL的结尾与请求参数的开始,传递参数长度受限制。
(它的主要作用是从Web服务器获取一个资源。)
(GET方法的作用在于获取资源。)
post:( 传输实体文本 )
允许客户端给服务器提供信息较多。POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,这样POST方式对传送的数据大小没有限制,而且也不会显示在URL中。
(POST方法的主要作用是执行操作。)
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。
(可能导致建立新的资源或者对原有资源的修改。提交的资源放在请求体中。不支持快取。非幂等)
head:(获得报文首部)
向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。
服务器返回的消息头应与对应GET请求返回的消息头相同。因此,这种方法可用于检查某一资源在向其提交GET请求前是否存在。
(本质和get一样,但是响应中没有呈现数据,而是http的头信息,主要用来检查资源或超链接的有效性或是否可以可达、检查网页是否被串改或更新,获取头信息等,特别适用在有限的速度和带宽下。)
(具体来说:1、判断类型; 2、查看响应中的状态码,看对象是否存在(响应:请求执行成功了,但无数据返回); 3、测试资源是否被修改过 HEAD方法和GET方法的区别: GET方法有实体,HEAD方法无实体。 )
put:(上传文件)
向指定资源位置上传其最新内容 。
(这个方法试图使用包含在请求主体中的内容,向服务器上传指定的资源。如果激活这个方法,渗透测试员就可以利用它来攻击应用程序。例如,通过上传任意一段脚本并在服务器上执行该脚本来攻击应用程序。还有许多其他与攻击Web应用程序没有直接关系的HTTP方法。然而,如果激活某些危险的方法,Web服务器可能面临攻击风险。)
OPTIONS:(询问支持的方法)
OPTIONS方法用来查询针对请求URL指定资源支持的方法(客户端询问服务器可以提交哪些请求方法)
(这种方法要求服务器报告对某一特殊资源有效的HTTP方法。服务器通常返回一个包含Allow消息头的响应,并在其中列出所有有效的方法。)
请求头:
Accept:
accept:
这个消息头用于告诉服务器客户端愿意接受哪些内容,如图像类型、办公文档格式等。
Accept-Charset:浏览器可接受的字符集。
Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。
Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。
referer:
这个消息头用于指示提出当前请求的原始URL。
(包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。)
User-Agent:
这个消息头提供与浏览器或生成请求的其他客户端软件有关的信息。
(浏览器版本信息、系统信息(反爬虫))
host:
这个消息头用于指定出现在所请求的完整URL中的主机名称。
(初始URL中的主机和端口。 列:localhost:8080)。
cookie:
这个消息头用于向服务器提交它以前发布的cookie。
(这是最重要的请求头信息之一)
(携带的cookie,做用户认证用)
X_Forwarded_for:
是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。
(伪造来源IP)
:X_forwarded_for(重要):可以伪造IP地址。(列:不允许外网访问,可伪造127.0.0.1)
Authorization:
这个消息头用于为一种内置HTTP身份验证向服务器提交证书。
响应头:
Location:
1.htm //重定向 302
Access-Control-Allow-Origin:
这个消息头用于指示可否通过跨域Ajax请求获取资源。
WWW-Authenticate:
这个消息头用在带401状态码的响应中,提供与服务器所支持的身份验证类型有关的信息。