先来看看一个http请求实例
请求行: POST /chapter17/user.html HTTP/1.1
请求头:
Accept: application/json, text/javascript, */*; q=0.01
Accept-Encoding: gzip, deflate
Accept-language: zh-CN,zh;q=0.8
Connection: keep-alive
Content-Length: 38
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Host: 192.168.1.66:92
Orgin: http://localhost:3000/
Referer: http://localhost:3000/
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
请求行
组成: 请求方法 空格 请求URL的path 空格 协议名及版本号
请求方法: 常见的即POST、GET,此外还包括PUT、HEAD、DELETE、OPTIONS、TRACE
请求URL的Path: path= pathname+search, 与请求头里的Host组成完整url地址
备注: host= hostname+port,对于网址的组成可查看: http://www.cnblogs.com/yanze/p/6009127.html,这个很重要
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
请求头
参数详解:
Accept 客户端能够接受的MIME类型(别发其他类型给我)
application/json, text/javascript, */*; q=0.01,由此可知可接受application/json, text/javascript,但*/* q=0.01又是什么?
*/*,*是通配符,即任何字符串,*/*代表可为任何MIME类型
q(q-factor品质因数)为权重,代表对某种类型的喜好程度,以‘,’为分割标识,默认为1
application/json, text/javascript, */*; q=0.01=>application/json;q=1, text/javascript;q=1, */*; q=0.01,解释起来就是浏览器可接受任何文件,但最倾向application/json和 text/javascript
Accept-Encoding 浏览器能接受的编码方式
默认为identify,identify用于指代自身(例如:未经过压缩和修改)。除非特别指明,这个标记始终可以被接受。
Accept-Encoding: * 任何类型
Accept-Encoding: gzip, deflate gzip与deflate类型
Accept-language 浏览器可接受的语言
zh-CN,zh;q=0.8 zh-CH(zhongwen china中文简体)(zh代表中文全体,包括简体、繁体、方言等)
Connection
详情可查看: http://www.cnblogs.com/yanze/p/7750239.html
Content-Length 表示发送给对方的消息主体的大小
大小单位为十进制数字表示的八位元组的数目
Content-Type 当前发送信息的MIME类型
Host 当前发送请求的浏览器的host
host=hostname+port
Orgin(源头)
origin= protocal+hostname+port
Referer(引用页)
referer= protocal+hostname+port+search
referer原本是referrer,referer是误称,但错的人多了也就正确了。。
origin与referer与诸多区别:
1.origin只用于Post请求,Referer用于所有请求
2.设置referer容易被csrf攻击,origin更具安全性,详见:http://blog.csdn.net/zdavb/article/details/51161130
User-Agent(用户代理)
User-Agent: Mozilla/<version> (<system-information>) <platform> (<platform-details>) <extentions>
如: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
不同浏览器,不同系统会有不同的user-agent,这涉及到浏览器大战的那段鸡飞狗跳的历史,详情可见: http://www.cnblogs.com/egger/archive/2013/04/20/3032070.html
一言以蔽之: 现今混乱的场面, IE是始作俑者