【问题标题】:Chasing-coins api cors issue [duplicate]Chasing-coins api cors问题[重复]
【发布时间】:2019-03-12 03:25:21
【问题描述】:

所以我不太确定自己做错了什么,但是在尝试对 chasing-coins 进行 API 调用时遇到了跨域请求被阻止的问题。显示了两个原因:

  1. CORS 标头“Access-Control-Allow-Origin”缺失
  2. CORS 请求未成功

这是我的代码

fetch('https://chasing-coins.com/api/v1/coins', {
  method: 'GET',
  headers: { 'Access-Control-Allow-Origin': '*' }
})
.then(response => console.log(response))

我做错了什么?

编辑:不确定这是否会有所不同,但我使用的是 localhost 并测试了 firefox 和 chrome,两者都不起作用

【问题讨论】:

  • Access-Control-Allow-Origin 是服务器发回的响应标头,而不是在前端代码中设置的请求标头。问题是 https://chasing-coins.com/api/v1/coins 没有发送 Access-Control-Allow-Origin 响应标头。您无法通过尝试从前端代码发送它来解决这个问题。请参阅 *How to use a CORS proxy to get around “No Access-Control-Allow-Origin header” 问题•stackoverflow.com/questions/43871637/…的答案部分@

标签: javascript reactjs fetch-api


【解决方案1】:

这与托管 API 的服务器的 CORS 问题有关。源 API 没有设置允许浏览器从不同来源请求资源的配置,因此使用浏览器从不同来源发出的任何请求最终都会导致飞行前错误。

在 TCP/IP 握手请求期间发生 pre-flight 错误,此时源已被确认,如果服务器未配置为处理跨源请求,浏览器将无法按预期完成请求。

要解决这个问题,您需要使用后端服务器(例如 nodejs)来查询 API 并将其提供给您的前端代码。这将起作用,因为 nodejs 在从外部 API 请求资源时没有 CORS 策略。

这也是 CURL 和 Postman 等应用可以使用 API 的原因,因为它们也不会对请求执行 CORS 策略。

【讨论】:

  • 我很困惑,我仍然遇到与上面发布的相同的 CORS 问题:s
  • 你在哪里粘贴的?
  • 我已经更新了我的答案,请阅读。
猜你喜欢
  • 2018-12-10
  • 1970-01-01
  • 2019-02-05
  • 2018-09-30
  • 1970-01-01
  • 2022-12-18
  • 2021-08-11
  • 2016-09-20
  • 2019-09-16
相关资源
最近更新 更多