HTTP请求头

常用请求头

请求头描述备注
Accept告诉web服务器自己接收什么媒体类型。
Accept-Charset浏览器接收内容的字符集,通常是utf-8。
Accept-Encoding浏览器接收的编码方法。例如指定是否压缩,若支持压缩的话支持压缩方式,具体如常见的Accept-Encoding: gzip, deflate.
Accept-Language浏览器接收的语言。
Accept-RangesWeb服务器表明自己是否接受获取某个实体的一部分(比如文件的一部分)请求,这里主要用于部分文件的传输,bytes字段表示接受传输多大长度内容,none表示不接受。
Allow设置服务器接受的请求的方法,例如GET、POST、PUT,如果不支持,则返回405。
Authorization当客户端接收到来自web服务器的WWW-Authenticate响应时,后面可以用该头部来携带自己的身份验证信息给web服务器直接进行认证。
Cache-Control用来申明强缓存
no-cache不使用缓存实体,要求去web服务器去请求数据。
max-age设置的缓存过期的时间。
no-store不缓存。
Connection长连接(持续连接)相关设置。节省TCP连接时间开销。常用设置如下:
close告诉web服务器,在完成本次请求响应后断开连接,无需等待后续请求。
keep-alive保持连接一段时间,等待后续请求,如果浏览器请求保持连接,则头部表明需要web服务器保持连接的时长(以秒为单位),例如:keep-alive: 200。http1.1中会默认设置开启长连接。
Content-Encoding与请求头的Accept-Encoding相互呼应,web服务器表明返回内容是按何种方式压缩,例如:Content-Encoding: gzip。
Content-Language与请求头中的Accept-Language相呼应,告诉浏览器响应的媒体对象的语言。
Content-lengthWeb服务器告诉浏览器请求内容的长度。
Content-RangeWeb服务器表明响应包含的部分对象的为整个对象的哪个部分。
Content-Type与请求头的Accept相呼应,表明web服务器告诉浏览器相应内容的类型。
Etag对象的标志值。一个文件如果被修改了,其Etag值也会被修改。Etag和Last-Modified都是设置的协商缓存。例如前一次请求某个js文件时获取了服务器相应传回来的Etag字段,当再次请求该文件时会在If-None-Match字段中带上Etag的值。web服务器会根据这个Etag值判断文件和先前比是否改变了。
Expireshttp1.1之前时代设置强缓存的字段。是web服务器告诉客户端的一个具体过期的时间点(服务器时间),需要客户端和服务端时间同步,若客户端时间不准确,可能现没有利用缓存的情况,所以http1.1中建议设置Cache-control。例如:Expires:Sat,23 May 2009 10:02:12 GMT。
Host客户端指定自己访问的web服务器的域名/IP地址及端口号。例如:Host: www.baidu.com
If-None-Match对应Etag,是客户端发送给服务端的。为上一次web服务器响应的Etag值。
If-Modified-Since对应Last-Modified, 是客户端发送给服务器的,为上一次web服务器响应的Last-modified的值。

摘自

GET发送协议

1GET /api/get?param=1&param=2 HTTP/1.1\r\nAccept: */*\r\nHost: api.linuxcrypt.cn\r\nUser-Agent: ESP8266_RTOS_SDK/v3.2 ESP8266\r\nConnection: Keep-Alive\r\n\r\n

POST发送协议

1POST /api/login.do HTTP/1.1\r\nAccept: */*\r\nContent-Length: 20\r\nContent-Type: application/x-www-form-urlencoded; charset=utf-8\r\nHost: api.linuxcrypt.cn\r\nUser-Agent: ESP8266_RTOS_SDK/v3.2 ESP8266\r\nConnection: Keep-Alive\r\n\r\nparam1=value1&param2&value2"
2
3"Content-Length: 21", 200的计算是len(param1=value1&param2&value2)