我正在尝试从Javascript调用服务。 当我使用Postman的params和header调用API Url时,一切正常。
但是当我尝试在我的代码中使用相同的参数和标题调用相同的URL时,它会给我一个未经授权的错误。
JQuery ajax代码是:
var url = "https://website/getAll"
var headers = {
'Accept': 'application/json',
'Accept-Language': 'en',
'apiKey': 'mykey',
'identifierForVendor': 'myVendor'
};
$.ajax({
url: url,
data: { myData: 'myData'},
type: "GET",
dataType: "json",
headers: headers,
success : function(response) {
alert('sss');
}
});
}
错误:
无法加载“url ...”:对预检请求的响应未通过 访问控制检查:没有'Access-Control-Allow-Origin'标头 出现在请求的资源上。来源'http://127.0.0.1'是 因此不允许访问。响应的HTTP状态代码为401。
并在回复中:
没有指定apiKey
有谁知道为什么?有什么建议吗?为什么它在Postman上正常工作而没有处理我的代码呢?
谢谢!
答案 0 :(得分:1)
问题出在服务器上,cors阻止任何外部请求访问API。它允许它们工作。
答案 1 :(得分:0)
在我看来,您在请求的实际标头中指定了api信息,而实际应在数据参数中指定它。
请改为尝试:
var url = "https://website/getAll"
var headers = {
'Accept': 'application/json',
'Accept-Language': 'en'
};
$.ajax({
url: url,
data: {
myData: 'myData'
apiKey: 'mykey',
identifierForVendor: 'myVendor'
},
type: "GET",
dataType: "json",
headers: headers,
success : function(response) {
alert('sss');
}
});
}
我只是建议这个,因为你的401错误的回复是没有指定apiKey 这让我相信它永远不会被阅读。我不是说一个方法不存在将apiKey指定为请求头的一部分,我之前从未使用$.ajax()
,我只是在请求参数中指定了API凭据等