javascript - 无法使用 Fetch API 从本地主机加载 Deezer API 资源

标签 javascript cors localhost fetch-api deezer

我正在尝试从本地主机访问 Deezer API,但我不断收到以下错误:

Fetch API cannot load http://api.deezer.com/search/track/autocomplete?limit=1&q=eminem.
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost' is therefore not allowed access.
If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

localhost 的响应头确实有 Access-Control-Allow-Origin 头 (访问控制允许来源:*)。

我正在使用这样的获取: fetch('http://api.deezer.com/search/track/autocomplete?limit=1&q=eminem')

我做错了什么?

最佳答案

您可以通过公共(public) CORS 代理发出请求;为此,请尝试将您的代码更改为:

fetch('https://cors-anywhere.herokuapp.com/http://api.deezer.com/search/track/autocomplete?limit=1&q=eminem')

通过 https://cors-anywhere.herokuapp.com 发送请求,它将请求转发到 http://api.deezer.com/search/track/autocomplete?limit=1&q=eminem 然后接收响应。 https://cors-anywhere.herokuapp.com 后端将 Access-Control-Allow-Origin header 添加到响应并将其传递回您的请求前端代码。

然后浏览器将允许您的前端代码访问响应,因为浏览器看到的是带有 Access-Control-Allow-Origin 响应 header 的响应。

您还可以使用 https://github.com/Rob--W/cors-anywhere/ 设置自己的 CORS 代理

有关当您使用 XHR 或 Fetch API 或来自 JavaScript 库的 AJAX 方法从前端 JS 代码发送跨域请求时浏览器会做什么的详细信息,以及有关必须接收哪些响应 header 以使浏览器允许前端代码的详细信息访问响应——参见 https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS .

关于javascript - 无法使用 Fetch API 从本地主机加载 Deezer API 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45483759/

相关文章:

javascript - 在新窗口中打开 Highcharts xAxis 链接

javascript - 如何使 cors 代理服务器使用 http 基本身份验证处理 https 请求?

java - 无法初始化类 org.jfree.chart.JFreeChart

http - 使用 Deno 在本地网络上提供文件服务

openssl - 如何让浏览器信任本地主机 SSL 证书?

java - 将二进制数据添加到html表单中进行上传

javascript - 无法让 JavaScript 程序添加奇数

javascript - 无法从控制台日志中的 api "undefined"请求数据

firefox - 如何在 mozilla firefox 中禁用 CORS?

c# - 预检请求返回 404 Not Found for Controllers in an Area