reactjs - 在 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时,谁能解释一下为什么它显示选项
解决方案
这意味着您的 API 服务器不接受 CORS 请求或来自 localhost 的请求。
查看您的 API 文档,但我猜您将无法从您的网络应用程序直接与其交互。
您最好的选择是使用代理,您可以自己开发一个或使用 node-http-proxy 之类的东西来代理您的 API 调用。(有 php 或 python 等价物)
代理服务器将能够发出请求,然后将它们转发到您的应用程序。
建议进一步阅读:在谷歌上输入理解 CORS 并阅读更多相关信息。
对于本地开发,请查看:
推荐阅读
- php - 在方法中使用静态变量与静态属性
- c# - 将字符串 XML 分离为字符串变量 | 序列化?
- asp.net-core - 无法获取访问令牌
- jenkins - 在 Jenkins 作业中显示超链接
- java - 从 Java 代码中提取所有方法及其名称和正文并重定向到 JSON 文件
- r - 使用 rvest 抓取多个页面的 doc_parse_file 错误
- javascript - 为什么javascript只会输出数组中的最后一个字符串?
- php - 当我使用 PHP 更新 MySQL 中的日期时间记录时,日期时间比我的时间提前 1 小时,我该如何更改?
- flutter - Flutter 构建错误:配置根项目“bidirectional_scroll_view”时出现问题
- c# - 如何在c#中捕获自适应卡片的超链接的动作