Jquery 如何设置请求头?
我试图使用jquery从api中提取数据,但收到一个错误 加载资源失败:服务器响应状态为401(未授权) 我已经设置了如下urlJquery 如何设置请求头?,jquery,Jquery,我试图使用jquery从api中提取数据,但收到一个错误 加载资源失败:服务器响应状态为401(未授权) 我已经设置了如下url url: "https://jsonodds.com/api/odds/soccer" 我试着用两种不同的方式设置标题 首先 headers: { 'JsonOdds-API-Key', key } 还可以使用beforesend函数 beforeSend: function (xhr) {
url: "https://jsonodds.com/api/odds/soccer"
我试着用两种不同的方式设置标题
首先
headers: {
'JsonOdds-API-Key', key
}
还可以使用beforesend函数
beforeSend: function (xhr) {
xhr.setRequestHeader("JsonOdds-API-Key", key);
}
我已经定义了我的密钥。我已经在postman上测试了url和标题,它返回数据,这可能是我编写的其他代码的问题吗?jQuery中的ajax调用示例:
$.ajax({
url: "https://jsonodds.com/api/odds/soccer",
data: { signature: authHeader },
type: "GET",
beforeSend: function(xhr){xhr.setRequestHeader('JsonOdds-API-Key', key);},
success: function() { alert('Success!'); }
});
我发布了一个完整的示例,因为在OP中我看到了调用的各个部分,我想确保您正确构建了它
希望有帮助
更新1:
data: {}
要发送到服务器的数据。如果需要,它将转换为查询字符串
还不是字符串。它被附加到GET请求的url。看见
processData选项以阻止此自动处理。对象必须
必须是键/值对。如果值是数组,jQuery将序列化多个
基于传统设置值的具有相同键的值
检查文档,这将是您成功编码的指南:
此外,这篇文章对你非常有用:
干杯 这个代码应该可以工作
$.ajax({
url: 'https://jsonodds.com/api/odds/soccer',
headers: {
'JsonOdds-API-Key': key
}
});
401错误也可能是API密钥格式错误的结果。请检查它是否正确,您可以通过打开开发者工具->网络->过滤“api/赔率/足球”->单击请求->滚动右侧并检查请求标题部分,查看是否发送了自定义标题
更新
该API不允许常规的前端ajax调用,因为它们需要ApiKey作为头,并且不允许跨域请求。要绕过跨域请求,可以发送JSONP请求,但不能随JSONP请求一起发送自定义头,因此如果必须发送自定义头(api密钥),则无法绕过跨域问题
(索引):无法加载1 XMLHttpRequest。对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。因此,不允许访问源“”。响应的HTTP状态代码为401
测试Curl时,Api键是正确的。在终端粘贴以下内容
curl-X GEThttps://jsonodds.com/api/odds -H“JSONODS API密钥:yourapikey”
您需要使用一些服务器端解决方案(例如NodeJS或PHP)来处理对Api的调用。标题:{'jsonods Api Key',Key}您需要的不是逗号,而是冒号。
标题:{'jsonods Api Key',Key}
注意:
,而不是,
。每当你在JS中看到问题时,你应该首先检查控制台——在这种情况下你会看到语法错误。我仍然会看到401错误。你知道还有什么可能导致这种情况吗?当我编写其他代码时,这是我收到的唯一错误。您是否检查了您使用的API密钥是否正确?是的,API密钥是否正确。当我转到开发工具并筛选“api/Lobbs/soccer”时,什么都没有出现。谢谢@Riku,还有一个问题,这些调用可以在asp.net mvc中处理吗?数据是什么:{signature:authHeader}行?我是jquery的新手,如果有什么问题,很抱歉simple@DaveReg你好,朋友!检查我的更新!;)我建议你检查一下文件我已经尝试了所有我能想到的方法,但我仍然会犯这个错误。你能试试下面的钥匙吗?24c00f23-2457-11e7-b6b0-0afc106a1b07。我几乎可以肯定这是正确的钥匙,但我知道我不是在浪费时间