我试图对API进行简单的jquery ajax调用:
我的代码:
$.ajax({
origin: "*",
url: 'http://example/test',
type: 'get',
contentType: 'application/json; charset=utf-8',
dataType: 'jsonp',
crossDomain: true,
beforeSend: function (xhr) {
xhr.setRequestHeader("API_KEY", 'xxx');
xhr.setRequestHeader("Authorization", 'xxx');
},
success: function (data) {
});
},
error: function () {
}
});
Api正确使用授权并返回正确的数据,但在我从JQuery ajax调用它时会出现错误403 Forbidden。
响应标题:
HTTP / 1.1 403禁止 缓存控制:无缓存 Pragma:没有缓存 内容类型:text / javascript;字符集= utf-8的 到期:-1 服务器:Microsoft-IIS / 8.5 X-AspNet-Version:4.0.30319 X-Powered-By:ASP.NET 日期:2017年3月19日星期日格林威治标准时间13:00:19 内容长度:127
请求标题:
接受: / Accept-Encoding:gzip,deflate,sdch 接受语言:EN-US,EN; Q = 0.8 缓存控制:无缓存 连接:保持活跃 主持人:SP16-应用:2525 附注:无缓存 引用者:http://xxx/test
答案 0 :(得分:0)
请注意,您无法为jsonp
请求发送标头,这是一个脚本请求。您确定要jsonp
而不是json
吗?
GET
没有请求contentType
,因为没有正在发送的正文内容。
此外,你在这里有一个错字,但是,我想,这只是StackOverflow答案的错字:
xhr.setRequestHeader("API_KEY", 'xxx;
更改为
xhr.setRequestHeader("API_KEY", 'xxx';
另请参阅this answer。