記錄今天遇到的一個問題:
問題現狀
有一個需要前端偽造302進行重定向的需求,我們需要將這樣的一個路徑:http://xxx.com/system-name/#/index
,拼接在跳轉地址的后面,進行重定向。拼接的方式是這樣的:
http://redirect_system_host.com?redirect_url=${url}
,這個url就是我們上面所列舉的地址,是一個history模式的路由地址。
排查
在發送請求的過程中,我們很確定傳輸的地址沒有錯,但是對方系統收到地址里面就是沒有路由后面的/#/index
,導致重定向過程錯誤。
剛開始以為是對方系統中的設置,確認是傳輸錯誤以后,我們提問了ChatGPT,它給出這樣的答案:
提示我們應該對路徑進行編碼encodeURIComponent
,當我們嘗試了之后,結果確實對了。所以,確實是因為路徑沒有編碼導致的。
解決和結論
所以,得出結論,當在傳輸一些路徑的地址的時候,尤其是路徑里有特殊字符,最好都使用encodeURIComponent
進行編碼,避免因傳輸過程中丟失、解析方式不一致等導致出現錯誤。