首頁 >web前端 >js教程 >為什麼在 Fetch 的'no-cors”模式下,'response.json()”會拋出'意外的輸入結束”?

為什麼在 Fetch 的'no-cors”模式下,'response.json()”會拋出'意外的輸入結束”?

DDD
DDD原創
2024-12-01 19:57:18805瀏覽

Why Does `response.json()` Throw

處理CORS 回應時出現意外的輸入錯誤

使用no-cors 模式處理REST-API 取得的回應時,開發人員呼叫的回應時,開發人員可能會遇到“SyntaxError: Unexpected end of input”錯誤。此錯誤發生在response.json()行,並阻止回應被解析為JSON。

原因

no-cors模式限制了向瀏覽器回應資料。在這種模式下,回應變得不透明,這意味著前端 JavaScript 無法存取其正文或標頭。此限制旨在防止跨來源資料存取和潛在的安全漏洞。

解決方案

要解決此錯誤,必須從要求。此模式不應用作 CORS 問題的解決方法。相反,應考慮以下解決方案:

  • 配置伺服器發送 Access-Control-Allow-Origin 回應標頭並處理 OPTIONS 請求。
  • 使用 CORS 代理程式轉送向伺服器發出請求並處理 CORS 標頭。

其他資訊

  • Request 物件的文件解釋了使用no-cors 模式的效果:https://developer.mozilla.org/ en-US/docs/Web/API/Request /mode
  • 有關處理CORS問題的指南,請參閱以下答案: https://stackoverflow.com/questions/23619190/no-access-control-allow-origin-header-is-present-on-the-requested-resource-whe

以上是為什麼在 Fetch 的'no-cors”模式下,'response.json()”會拋出'意外的輸入結束”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn