Host: 域名
Host表示請求的服務器網址;
request headers中的host字段
例如有user.xiaoqiang.com,hotel.xiaoqiang.com
現在需要登錄后去請求hotel.xiaoqiang.com的數據。
在通過user.xiaoqiang.com/login.do登錄成功后,要去請求hotel.xiaoqiang.com的數據。
通過python模擬這些請求,需要模擬請求頭:
reqheaders={'Content-type':'application/x-www-form-urlencoded', 'Accept':'*/*',
'Host':'user.xiaoqiang.com', 'Origin':'http://user.xiaoqiang.com', 'Referer':'http://user.xiaoqiang.com/passport/login.jsp?ret=http%3A%2F%2Fuser.xiaoqiang.com%2Fuserinfo%2Findex.jsp', 'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1',}
請求數據:
reqdata={'username':'', 'password':'', 'loginType':'0', 'ret':'http://hotel.xiaoqiang.com/nprice/xiaoqiangtest/Query.jsp?cityurl=&fromDate=2014-03-22&toDate=2014-03-25&seq=beijing_city_2642&status=true','remember':0,'vcode':''}
針對user.xiaoqiang.com/login.do登錄,請求頭中host就是user.xiaoqiang.com。
在登錄成功后,直接用登錄請求的request headers 去請求hotel.xiaoqing.com的數據,此時服務器返回404,很郁悶,不知道到底是為什么。
最后發現是,用於登錄的request headers 里邊的host是user.xiaoqiang.com,傳到服務器以后,hotel.xiaoqiang.com不響應這個請求,所以說是404,就等於在user.xiaoqiang.com上邊找不到hotel.xiaoqiang.com的請求
在重新修改request headers里邊的host為hotel.xiaoqiang.com,請求即可被hotel.xiaoqiang.com接受,服務器提供了服務,得到了正確的響應。
綜上所述,個人理解host字段是代表,你的請求將要達到那台主機,並會在服務端被驗證,如果不符合,就不能正確處理客戶端的請求。