2010-06-18 76 views

回答

12

此問題的答案類似於/ questions/774136的答案。 基本上,根據標準@ faqs.org/rfcs/rfc1808.html(見第2.4.1節)它說:「」請注意片段標識符不被視爲URL的一部分。「012ff正如」stephbu「指出的,「錨定標記從不作爲任何瀏覽器的HTTP請求的一部分發送,它只在瀏覽器中本地解釋」

1

錨部分(在#之後)不會發送到PHP中的任何$ _SERVER變量。我不知道是否有一種方法可以從URL中檢索該信息(據我所知,這是不可能的)。它應該被瀏覽器用來在頁面中找到一個位置,這就是爲什麼頁面不會重新加載,如果你點擊一個錨點像這樣:<a href="#hello">hello</a>

6

散列變量不會發送到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變量訪問

+1

沒有我知道的瀏覽器將URL的'#hash'部分傳遞給服務器。 – gnarf 2010-06-18 06:19:47