请求报文构成:
URI
HTTP 协议使用 URI 让客户端定位到资源, 类似这样完整的URI:hackr.jp/index.htm
如果不是访问特定资源而是对服务器本身发起请求,可以 用一个 * 来代替请求 URI:
Http请求方法
【GET】 获取资源 【安全&幂等】
GET最大长度限制:
GET URL有最大长度,通常是1024个字节,针对不同浏览器会有所差别。
Http的get请求⽅法提交的数据⼤⼩长度并没有限制,Http协议规范没有对URL长度进⾏限制。⽬前说的get长度有限制,是特定的浏览器及服务器对它的限制。
各种浏览器和服务器的最⼤处理能⼒如下:
IE:对URL的最⼤限制为2083个字符,若超出这个数字,提交按钮没有任何反应。
Firefox:对Firefox浏览器URL的长度限制为:65536个字符。
Safari:URL最⼤长度限制为80000个字符。
Opera:URL最⼤长度限制为190000个字符。
Chrome:URL最⼤长度限制为8182个字符。
Apache(Server):能接受的最⼤url长度为8192个字符(这个准确度待定)
Microsoft Internet Information Server(IIS):能接受最⼤url的长度为16384个字符
GET可缓存
【POST】 传输实体主体
POST最大长度限制:
理论上讲,post是没有⼤⼩限制的。Http协议规范也没有进⾏⼤⼩限制,起限制作⽤的是服务器处理程序的处理能⼒。
POST两阶段发送数据:
多数浏览器对于POST采⽤两阶段发送数据的,先发送请求头,再发送请求体,即使参数再少再短,也会被分成两个步骤来发送(相对于GET),也就是第⼀步发送header数据,第⼆部再发送body部分。Http是应⽤层的协议,⽽在传输层有些情况TCP会出现两次连结的过程,http协议本⾝不保存状态信息,⼀次请求⼀次响应。对于TCP⽽⾔,通信次数越多反⽽可靠性越低,能在⼀次连结中传输完需要的信息是最可靠的,所以尽量使⽤GET请求来减少⽹络耗时。如果通信时间增加,这段时间客户端于服务器端⼀直保持连接状态,在服务器侧负载可能会增加,可靠性会下降。
POST不进⾏缓存
【PUT】 传输文件
【HEAD】 获得报文首部。 【安全&幂等】
不返回报文主体部分。用于确认 URI 的有效性及资源更新的日期时间等。
【DELETE】 删除文件
【OPTIONS】 询问支持的方法
其他不常用的:TRACE、CONNECT、LINK、UNLINK
响应报文构成:
其中,报文头以一空行分隔,之后的内容称为资源实体的主体。
拓展
安全
指的是请求方法不会“破坏”服务器上的资源,即不会对服务器上的资源造成实质的修改
幂等
多次执行相同的操作,结果都是相同的