Fetch 不會發送或接收任何 Cookie
Fetch 不會發送或接收任何 cookie 🍪
今天我想我已經修復了一個困擾我很久的錯誤。
“在我的機器上工作”的嚴重案例
我有一些使用外部 API 的代碼,一旦經過身份驗證,它就會在稍後進行另一個 API 調用以獲取最終用戶最近的圖像。
這很好用……
除了一些用戶報告他們一旦登錄就看不到他們的圖像。
但是,在很長一段時間內,我無法重新創建它。它適用於我的機器,適用於 macOS、Windows 和 Linux,適用於 safari、chrome 和 firefox。它適用於 iPhone 6s。
因此,我添加了日誌記錄,然後添加了更多日誌記錄。我什至註冊了一個試用 Browserstack 帳戶,以嘗試盡可能多的不同瀏覽器和設備,但仍然無法重現問題。
然後最終在測試其他東西時,我設法使用運行 iOS 11.2 的 iPhone 6S 使用 Apple 的 iOS 模擬器重新創建了該錯誤。
當涉及到錯誤修復代碼時,能夠重新創建錯誤確實是成功的一半。
因此,有了一些斷點和對正在發生的事情有了更清晰的了解,我最終能夠修復錯誤並將一個可以工作的應用程序投入生產。
錯誤?
好吧,我不是 100% 確定如何解釋它,但前端有一些 JavaScript 代碼使用 fetch API 調用 ApiController 來檢查會話變量並根據該值將數據返回給前端客戶端。
對於大多數瀏覽器和我的開發環境,以下代碼足以進行調用並獲取正確的數據:
fetch(this.apiUrl)
但是,對於某些瀏覽器,我需要修改 fetch API 調用以指定 cookie 和憑據也必須與請求一起發送。
這是執行此操作的代碼,也是我提交的修復程序。
fetch(this.apiUrl, {
method: 'GET',
credentials: 'include'
})
fetch 的文檔確實在一定程度上指出了這個問題
為什麼這只需要某些瀏覽器我不確定,但我的修復似乎有效。
成功🎉