1. 程式人生 > 其它 >URL中"#"、"?"、"&"、"="特殊意義符號的用途及那些坑

URL中"#"、"?"、"&"、"="特殊意義符號的用途及那些坑

最近在排查一個線上問題,瀏覽器請求的URL中包含一個引數,並且引數的值是"#"號開頭的,

如下:www.aaa.com?name1=bbb&name2=#erqwers

發現在沒有登入的情況下,正常會跳轉到登入SSO,然後SSO登入後refer url和return url變成www.aaa.com?name1=bbb&name2=這樣了,後面的value值沒了。

於是查了一下相關文件:

"#"號相關:

1、"#"號代表網頁中的一個位置,其右面的字元,就是該位置的識別符號,瀏覽器讀取URL後,會自動將位置滾動至可視區域,常見於錨點或使用ID屬性。

2、#是用來指導瀏覽器動作的,對伺服器端完全無用。所以,HTTP請求中不包括#。

3、在第一個#後面出現的任何字元,都會被瀏覽器解讀為位置識別符號。這意味著,這些字元都不會被髮送到伺服器端。

4、只改變#後的部分時,瀏覽器只會滾動到相應位置,不會重新載入網頁。

5、改變#後,瀏覽器的訪問歷史中會增加一個記錄

6、網路爬蟲預設忽視#的部分,特殊情況除外,比如使用"#!"

"?"號相關:

1、前端的URL相同,但?號後內容不同,瀏覽器會認為是一個新的地址

"&"號相關:

1、URL中不同引數間的分隔符

"="號相關:

1、URL中不同引數的KeyValue的分隔符

備註:

1、URL中的value值,要避開使用特殊符號,如果要使用,建議轉義