我尝试从我自己的API获得JSON数据,从$。使用jQuery的ajax方法。我必须有一个标题'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 cannot load错误
如果我删除头,我没有错误,但我有我的401状态码。如果我删除头和我的API的身份验证与请求的头中的关键字,我得到我的数据。
我已经解决了这个问题:我的API不接受OPTIONS请求。(Ajax与jQuery需要做一个OPTIONS预请求)