我试图向API发出请求。它在邮递员中工作正常,但不能直接从浏览器中工作。除了https://developer.chrome.com/extensions/xhr之外,我找不到2之间的任何差异。但我不明白为什么这会成为一个问题,因为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是不同的。
非常感谢任何帮助!
答案 0 :(得分:1)
Chrome对此非常认真,即使将标题设置为' *'它不会让您执行跨域请求。
您可以为开发模式做些什么来添加"禁用的web安全"在您的Chrome快捷方式中(在路径之后,通过右键单击 - >属性)。然后关闭任务管理器中每个Chrome实例,并双击该快捷方式。您将收到一条警告,指出您在该模式下启动了浏览器,但它应该适用于本地测试目的。