javascript - 如何修复 Fetch API 中的 CORS 问题

标签 javascript reactjs http cors fetch-api

我正在使用 reactjs 构建一个仅限前端的基本天气应用程序。对于 API 请求,我使用的是 Fetch API。 在我的应用程序中,我从 simple API 获取当前位置我发现 并将位置作为 JSON 对象提供。但是当我通过 Fetch API 请求它时,我收到了这个错误。

Failed to load http://ip-api.com/json: Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers in preflight response.

所以我搜索并找到了多种解决方案来解决这个问题。

  1. 在 Chrome 中启用 CORS 解决了该错误,但是当我在 heroku 上部署该应用程序时,如何通过移动设备访问它而不会遇到相同的 CORS 问题。
  2. 我找到了一个 proxy API启用 CORS 请求。但由于这是一个位置请求,这给了我代理服务器的位置。所以这不是解决方案。
  3. 我已经完成了 Stackoverflow question并将 header 添加到我的 http 请求的 header 中,但这并没有解决问题。 (仍然给出相同的错误)。

那么我怎样才能永久解决这个问题呢?我可以用来解决 Fetch API 中 http 请求的 CORS 问题的最佳解决方案是什么?

最佳答案

如果您正在发出帖子、放置或补丁请求,则必须使用 body: JSON.stringify(data)

对数据进行字符串化
fetch(URL, 
        {
            method: "POST", 
            body: JSON.stringify(data),
            mode: 'cors',
            headers: {
                'Content-Type': 'application/json',
            }
        }
    ).then(response => response.json())
    .then(data => {
        ....
    })
    .catch((err) => {
        ....
        })
    });

关于javascript - 如何修复 Fetch API 中的 CORS 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48728173/

相关文章:

javascript - 使用 URL 中的 JSON 数据来显示 Google map 标记 - 怎么做?

javascript - 插件 "react"在 "package.json ..."和 "BaseConfig ..."之间发生冲突

http - Response.ContentType = "application/vnd.ms-excel"适用于 IE 和 firefox 但不适用于 Safari

angular - 处理http.get()中的错误

javascript - 解析: JavaScript Promises issue

javascript - AngularFire 取消 AngularJS 数组中的项目

javascript - 如何使 azure 函数从 Typescript 生成的 dist 文件夹中读取?

javascript - 如何正确对齐按钮内的 material-ui 图标?

reactjs - 在 typescript 中 react 高阶组件(HOC)

c# - 缓存健康检查网络核心