首页 > 解决方案 > 在 React js 中点击 fetch api 时,Get 方法被转换为 OPTIONS

问题描述

我正在尝试访问以下 api 并且需要基本的身份验证用户名和密码,并且在此允许的方法只是 get

dispatch(requestBegin());
let apiPath = `xxxx/TEST/appservice/api/app/10/10000127201901`;
return fetch(apiPath, {
  method: 'get',
  headers : {
     "contentType":"application/x-www-form-urlencoded",
      "Authorization" : 'Basic '+btoa('xxx:xxx'),
    },
})
  .then((response) => {
    dispatch(getEventsEnds(json));
  })
  .catch((error) => {
    dispatch(getEventsEnds());
  });

登录控制台的错误:

对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问源“ http://localhost:2200 ”。响应的 HTTP 状态代码为 405。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。

选项http://xxx/appservice/api/app/10/10000127201901 405(不允许的方法)

当我试图点击get api时,谁能解释一下为什么它显示选项

标签: reactjs

解决方案


这意味着您的 API 服务器不接受 CORS 请求或来自 localhost 的请求。

查看您的 API 文档,但我猜您将无法从您的网络应用程序直接与其交互。

您最好的选择是使用代理,您可以自己开发一个或使用 node-http-proxy 之类的东西来代理您的 API 调用。(有 php 或 python 等价物)

代理服务器将能够发出请求,然后将它们转发到您的应用程序。

建议进一步阅读:在谷歌上输入理解 CORS 并阅读更多相关信息。

对于本地开发,请查看:

https://github.com/Rob--W/cors-anywhere


推荐阅读