【问题标题】:Access-Control-Allow-Origin error but server is set to *Access-Control-Allow-Origin 错误,但服务器设置为 *
【发布时间】:2015-03-18 06:27:47
【问题描述】:

我正在尝试向 API 发出请求。它在邮递员中运行良好,但不能直接从浏览器中运行。除了https://developer.chrome.com/extensions/xhr,我找不到两者之间的任何区别。但我不明白为什么这会是一个问题,因为 Access-Control-Allow-Origin 设置为 *.

邮递员预览:

GET /facebook/v1/api/v2.2/123585981029762/insights/page_impressions?period=day HTTP/1.1
Host: api.url.com
Authorization: Basic {BASIC AUTH HASH}
X-KO-ACCOUNT: 123585981029762
Cache-Control: no-cache

邮递员响应标头:

Access-Control-Allow-Origin →    *
Cache-Control → private, no-cache, no-store, must-revalidate
Connection → keep-alive
Content-Length → 1000
Content-Type → application/json; charset=UTF-8
Date → Tue, 17 Mar 2015 21:51:17 GMT
ETag → "32a4e4fc7aeb25536a634c302505fb02e7efe9fb"
Expires → Sat, 01 Jan 2000 00:00:00 GMT
Facebook-API-Version → v2.2
Pragma → no-cache
X-FB-Debug → Y0OdHMjYO5KUIqcnnVNK4eWLZRiPSKUnsOAHZ3sf33qjVSanI2AoK/jpY9OhZUffGfX31Wo6IgUWMoXkZHZRKQ==
X-FB-Rev → 1645171

来自浏览器的Javascript:

xmlhttp= new XMLHttpRequest();   xmlhttp.open("GET","https://api.url.com/facebook/v1/api/v2.2/123585981029762/insights/page_impressions?period=day",true);
xmlhttp.setRequestHeader("authorization",'Basic {BASIC AUTH HASH}');
xmlhttp.setRequestHeader("X-KO-ACCOUNT",'12358376954762');
xmlhttp.send();

错误消息(在 Chrome 中):

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 401.

此外,Chrome 显示的是 OPTIONS 方法而不是 GET。 (我知道这是正常的跨浏览器错误)但是远程地址 IP 不同。

任何帮助将不胜感激!

【问题讨论】:

    标签: ajax http postman


    【解决方案1】:

    Chrome 对此非常认真,即使将标头设置为 '*' 也不会让您执行跨域请求。

    在开发模式下,您可以在 chrome 快捷方式中添加“disable-web-security”(在路径之后,通过右键单击 -> 属性)。然后在任务管理器中关闭每个 Chrome 实例,然后双击快捷方式。您将收到一条警告,提示您以该模式启动浏览器,但随后它应该可以用于本地测试目的。

    【讨论】:

    • 谢谢,我会试一试。显然域一直在与其他域通信,那么我应该如何设置 Access-control-allow-origin 以允许它?
    • 一些 API 包含一个 URI 白名单,它允许对特定域的请求。根据您的情况,您还可以检查“jsonp”、嵌入另一个网站或使用域松弛。但是,您可以检查是否可以在同一源上托管后端。
    猜你喜欢
    • 2014-05-05
    • 2023-04-02
    • 2012-09-20
    • 2018-12-12
    • 1970-01-01
    • 2017-05-11
    • 2016-08-01
    • 2012-08-05
    • 2017-06-15
    相关资源
    最近更新 更多