【问题标题】:XMLHttpRequest cannot load : only with headers in Ajax jQueryXMLHttpRequest 无法加载:仅使用 Ajax jQuery 中的标头
【发布时间】: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: {...}' 参数的标题,我的浏览器控制台中有两个错误:

  1. “选项”错误
  2. “XMLHttpRequest 无法加载”错误

如果我删除标题,我没有错误,但我有 401 状态代码。 如果我使用请求标头中的密钥删除标头和我的 API 身份验证,我会得到我的数据。

【问题讨论】:

    标签: php jquery ajax xmlhttprequest cors


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-10-02
      • 1970-01-01
      • 2015-03-22
      • 2011-04-19
      • 2014-12-09
      • 2014-04-25
      • 2021-06-23
      相关资源
      最近更新 更多