對查詢引數和重定向 URI 進行 URL 編碼

安全地編碼 redirect_uri 值、回撥 URL 和巢狀引數,避免認證或 API 請求繼續出錯。

本指南聚焦實戰場景:重定向流程、查詢引數、scope 值,以及編碼完整 URL 與編碼單個元件之間的區別。

適用場景
回撥 URL、巢狀查詢字串或 redirect_uri 值不斷被拒絕或截斷。
首先檢查什麼
檢查你編碼的是整個 URL 還是單個引數元件,這個差異通常就是重定向出錯的原因。
常見陷阱
空格、加號、@、/ 和 ? 在日誌裡看起來無害,但如果原樣複製,常常會導致請求出錯。
示例工作流
編碼 redirect_uri 值
巢狀的回撥 URL 應作為引數值進行編碼,而不是原樣貼上到外層請求中。
redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback%3Fnext%3D%252Fsettings
編碼 scope 字串
OAuth scope 值常包含空格,必須進行百分號編碼才能可靠傳輸。
scope=read%3Ausers%20write%3Ausers
處理搜尋詞或郵箱值
像 +、@、/ 和 ? 這樣的字元,通常說明你正在編碼正確的元件。
email=dev%2Balerts%40example.com
讓回撥地址保持可讀
線上工具允許你一次只編碼或解碼一個值,這在重定向日誌難以閱讀時很有用。
https://app.example.com/callback?next=/settings
encodeURI 與 encodeURIComponent

如果要保留完整 URL 的結構,請使用 encodeURI。若要編碼單個引數值,如 redirect_uri、state 或搜尋查詢,請使用 encodeURIComponent。

  • 大多數認證和 API 問題都來自本該使用 encodeURIComponent,卻誤保留了保留字元。
編碼具體值,而不是盲目編碼整個請求

已簽名請求、OAuth 重定向和巢狀 URL 都依賴在正確的層級對正確的元件進行編碼。拿不準時,先把該值單獨拿出來測試。

  • 如果問題其實出在請求體而不是查詢字串,請轉到 JSON 格式化。