【发布时间】:2017-05-06 07:31:11
【问题描述】:
我已经在 CORS 上苦苦挣扎了很长时间,但仍然没有完全理解。
我最简单的例子是使用 Wunderlist API -
使用以下代码:
var settings = {
"async": true,
"crossDomain": true,
"url": "http://a.wunderlist.com/api/v1/lists",
"method": "GET",
"headers": {
"x-client-id": "{ID}",
"x-access-token": "{TOKEN}",
"cache-control": "no-cache"
},
"data": "{\n\t\"revision\": 1,\n\t\"completed\": true\n}"
}
$.ajax(settings).done(function (response) {
console.log(response);
});
在 Postman/Fiddler 内将返回结果。但是,将其扔到基本站点或 Codepen 将返回 405、Pre-flight Warning 或 Invalid Request
我大致了解您允许在服务器端使用它,但我必须假设并非每个站点都允许 Postman 等连接,也不是每个我注册的供应商都允许我的领域。
那么,您如何在 API 调用中绕过 CORS 合规性?我尝试了很多我读过的东西,包括 crossDomain、Cross-Origin Header 等,并且总是得到相同的结果。
有什么见解吗?
【问题讨论】:
-
GET 从来没有预检限制。但是,POST 可以。
-
@Mike'Pomax'Kamermans - 不正确 - 自定义标头触发预检
-
@JaromandaX 请引用说明这一点的规范,因为我不知道该限制,并希望看到一个权威链接来确认您的声明。
-
@Mike'Pomax'Kamermans - MDN 是否足够权威? developer.mozilla.org/en-US/docs/Web/HTTP/…
-
作为一名 Mozilla 员工:你敢打赌!
标签: javascript ajax cors