XMLHttpRequest无法加载:只能使用Ajax中的标头jQuery

时间:2015-07-31 10:16:27

标签: php jquery ajax xmlhttprequest cors

我尝试使用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中的任何标题放在'标题中:{...}'参数,我的浏览器控制台中有两个错误:

  1. ' OPTIONS'错误
  2. ' XMLHttpRequest无法加载'错误
  3. 如果我删除标题,我没有错误,但我有401状态代码。 如果我使用请求标题中的密钥删除标题和我的API身份验证,我会获取数据。

1 个答案:

答案 0 :(得分:0)

我已经解决了问题:我的API不接受OPTIONS请求。 (带有jQuery的Ajax需要进行OPTIONS预请求)