XMLHttpRequest 无法加载:仅使用 Ajax jQuery 中的标头
Posted
技术标签:
【中文标题】XMLHttpRequest 无法加载:仅使用 Ajax jQuery 中的标头【英文标题】:XMLHttpRequest cannot load : only with headers in 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);
);
我在 *** 上阅读了几个关于 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 身份验证,我会得到我的数据。
【问题讨论】:
【参考方案1】:我已经解决了这个问题:我的 API 不接受 OPTIONS 请求。 (带有 jQuery 的 Ajax 需要进行 OPTIONS 预请求)
【讨论】:
以上是关于XMLHttpRequest 无法加载:仅使用 Ajax jQuery 中的标头的主要内容,如果未能解决你的问题,请参考以下文章
XMLHttpRequest 跨源请求仅支持协议方案反过来服务器
XMLHttpRequest 跨源请求仅支持协议方案反过来服务器
无法通过 xmlhttprequest 加载本地 xml 文件
如何使用 JavaScript 仅加载 jpg 的一部分 [重复]