[chrome] cors + 302 redirect 發生 request 持續 pending 狀況

撰寫本篇記錄文章時所使用的為以下測試環境:

Chrome: 83.0.4103.116.
OS: OS X 10.15.5

最近在排查一個在 Chrome 上發生的靈異狀況,大致上的重現(隨機)流程如下:

  1. 發送一個 fetch (mode: cors) 的 ajax request (same-origin)
  2. ajax response 為 302 redirect
  3. chrome devtool 顯示 redirect 後的 request 總是處在 pending 狀態

狀態上一直如下圖顯示

詳細測試後此情況僅在 Chrome 發生此狀況,進一步使用 chrome://net-export/ 查詢 network log,看起來 chrome 確實發送 request 後就無任何回應,更進一步使用在 server 端檢查 access.log 卻是沒收到任何 request.

查詢後也有幾個相關的 issue,目前並無找到可行的 workaround

只能盡可能避開使用 302 redirect + cors 發送 same-origin 的 ajax request

https://bugs.chromium.org/p/chromium/issues/detail?id=1099122&q=302%20stalled&can=2

https://support.google.com/chrome/thread/37163649?hl=en

Leave a Reply