我尝试使用jQuery从$ .ajax方法获取我自己的API中的JSON数据。 我必须有一个标题'授权-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 Framework):
$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中的任何标题放在'标题中:{...}'参数,我的浏览器控制台中有两个错误:
如果我删除标题,我没有错误,但我有401状态代码。 如果我使用请求标题中的密钥删除标题和我的API身份验证,我会获取数据。
答案 0 :(得分:0)
我已经解决了问题:我的API不接受OPTIONS请求。 (带有jQuery的Ajax需要进行OPTIONS预请求)