我接触了HTTP好几天了,今天我遇到了关于百度搜索引擎的问题。详情如下:
当我使用桌面浏览器打开http://www.baidu.com/并输入一些关键字,然后按ENTER键时,显示的浏览器网址类似于http://www.baidu.com/#wd=stackoverflow&ie=utf-8
,stackoverflow
作为搜索关键字。
请注意锚点 #wd 。我觉得这很奇怪,比如说。例如,谷歌就像https://www.google.com/search?q=stackoverflow
没有任何锚点。
我使用Fiddler(http://www.telerik.com/fiddler)来检查HTTP数据包交互,并在几次HTTP数据包交互之后奇怪地找到类似GET /s?ie=utf-8&wd=linux HTTP/1.1
的内容。
在整个过程中,服务器只回复HTTP/1.1 200 OK
而且没有HTTP/1.1 302 Moved Temporarily
之类的内容。
那么它怎么能最终重定向到GET /s?ie=utf-8&wd=linux HTTP/1.1
,浏览器对锚 #wd 做了什么?
提前致谢。
答案 0 :(得分:1)
#
符号后面的网址组件称为URL Fragment。它不是作为HTTP请求的一部分直接发送到服务器(这就是你在Fiddler中没有看到它的原因);它只能通过页面上运行的JavaScript访问。
有些网站在使用AJAX技术填充网页时会使用网址碎片;有关讨论,请参阅http://blogs.msdn.com/b/ieinternals/archive/2011/05/17/url-fragments-and-redirects-anchor-hash-missing.aspx。