先來看看一個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是始作俑者
