2010-06-02 50 views
2

我將queryString,我傳遞給servlet的doGet()方法,看起來像這樣的問題:#字符似乎導致了GET請求

數= 9 & preId0 = -99 & objId0 = - 99 & preId1 = -99 & objId1 = -99 & preId2 = 69 & objId2 = 16#!78 & preId3 = -99 & objId3 = -99 & preId4 = -99 & objId4 = -99 & preId5 = -99 & objId5 = -99 & preId6 = -99 & objId6 = -99 & preId7 = -99 & objId7 = -99 & preId8 = -99 & objId8 = -99

後幷包括#一切都是零,所以我假設#有一些特殊的意義。這是真的?還有其他這樣的角色會這樣做嗎?

回答

4

是的,#表示哈希值。例如,這用於跳轉到頁面中的錨定標記。無論何時將數據放入URL中,都需要對其進行網址編碼。在JavaScript中,您可以使用encodeURIComponent()。在其他語言中,您將需要查找文檔。

2

#指示URL的錨點部分,該部分用於標識由URL的其餘部分返回的文檔中的特定位置。它在技術上被稱爲Fragment portion of the URI.

#之後的所有內容都是其中的一部分。由於只有在文件被退回和處理時才重要(再次,它代表了該文件中的一個位置),因此它只對客戶有意義。它對服務器沒有任何意義或價值,客戶端會將整個值視爲單個值(除非您提供額外的自定義代碼來分解值並從中提取額外的含義)。

如果需要的字符#通過在URL中的價值的一部分,%23取代它 - 你可以做到這一點編程方式使用URL Encoding,將與那些通過是可以接受的運輸全部替換「特」字URI。

2

作爲一般的經驗法則,在將您的查詢字符串參數發送到服務器之前,最好對其進行URLENCODE查詢。網址中的#用於表示您當前所在的錨點,並在嘗試將其發送到服務器時導致問題。對URL編碼

更多信息可以在這裏找到:http://www.w3schools.com/tags/ref_urlencode.asp

2

「#」是一個特殊字符。它引用通常用於頁面錨點的散列。你可以簡單地在URL中編碼這個字符%23,這將消除這個問題。其他有意義的角色是? [space] &

相關問題