說,有一個URL http://www.example.com/#hello
URL是發送到Web服務器的錨部分嗎?
- 應該
#hello
東西被髮送到Web服務器或不存在,按照標準? - 現代瀏覽器如何操作?
更新:請不要忽略第一個問題。
說,有一個URL http://www.example.com/#hello
URL是發送到Web服務器的錨部分嗎?
#hello
東西被髮送到Web服務器或不存在,按照標準?更新:請不要忽略第一個問題。
此問題的答案類似於/ questions/774136的答案。 基本上,根據標準@ faqs.org/rfcs/rfc1808.html(見第2.4.1節)它說:「」請注意片段標識符不被視爲URL的一部分。「012ff正如」stephbu「指出的,「錨定標記從不作爲任何瀏覽器的HTTP請求的一部分發送,它只在瀏覽器中本地解釋」
錨部分(在#之後)不會發送到PHP中的任何$ _SERVER變量。我不知道是否有一種方法可以從URL中檢索該信息(據我所知,這是不可能的)。它應該被瀏覽器用來在頁面中找到一個位置,這就是爲什麼頁面不會重新加載,如果你點擊一個錨點像這樣:<a href="#hello">hello</a>
散列變量不會發送到Web服務器在所有。
例如,爲了http://www.whatismyip.org/#test從Firefox的請求發送後續的HTTP請求報文
GET/HTTP/1.1
Host: www.whatismyip.org
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cache-Control: max-age=0
你會注意到#是無處可尋。 使用#作爲導航形式看到的頁面是通過javascript實現的。 該參數可通過window.location.hash
變量訪問
沒有我知道的瀏覽器將URL的'#hash'部分傳遞給服務器。 – gnarf 2010-06-18 06:19:47