【发布时间】:2015-10-22 23:44:27
【问题描述】:
我尝试从我自己的 API、jQuery 的 $.ajax 方法获取 JSON 数据。 我的请求中必须包含标头“Authorization-api-key”,否则我将获得 401 状态代码。
$.ajax({
type: "GET",
headers: {'Authorization-api-key' : 'key'},
dataType: "json",
crossDomain: true,
url: "http://urlofmyonlineapi.com/api/ressource",
success: function (data) {
alert(data);
}
});
我在 stackoverflow 上阅读了几个关于 CORS 和“XMLHttpRequest 无法加载”问题的线程。因此,在我的 API 中,我添加了这些标头作为响应(我使用 Slim 框架):
$app->response->headers->set('Access-Control-Allow-Origin', '*');
$app->response->headers->set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
$app->response->headers->set('Access-Control-Allow-Headers', '*');
$app->response->headers->set('Access-Control-Allow-Credentials', 'true');
问题
如果我在 $.ajax 中放入任何带有 'headers: {...}' 参数的标题,我的浏览器控制台中有两个错误:
- “选项”错误
- “XMLHttpRequest 无法加载”错误
如果我删除标题,我没有错误,但我有 401 状态代码。 如果我使用请求标头中的密钥删除标头和我的 API 身份验证,我会得到我的数据。
【问题讨论】:
标签: php jquery ajax xmlhttprequest cors