最近在排查一個線上問題,瀏覽器請求的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值,要避開使用特殊符號,如果要使用,建議轉義