Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何设置请求头?_Jquery - Fatal编程技术网

Jquery 如何设置请求头?

Jquery 如何设置请求头?,jquery,Jquery,我试图使用jquery从api中提取数据,但收到一个错误 加载资源失败:服务器响应状态为401(未授权) 我已经设置了如下url url: "https://jsonodds.com/api/odds/soccer" 我试着用两种不同的方式设置标题 首先 headers: { 'JsonOdds-API-Key', key } 还可以使用beforesend函数 beforeSend: function (xhr) {

我试图使用jquery从api中提取数据,但收到一个错误

加载资源失败:服务器响应状态为401(未授权)

我已经设置了如下url

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。我几乎可以肯定这是正确的钥匙,但我知道我不是在浪费时间