无法访问Web服务--JQuery Ajax请求

时间:2018-01-14 14:30:27

标签: javascript jquery ajax

我正在尝试从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');
     }
 });
}

请求是: enter image description here

错误:

  

无法加载“url ...”:对预检请求的响应未通过   访问控制检查:没有'Access-Control-Allow-Origin'标头   出现在请求的资源上。来源'http://127.0.0.1'是   因此不允许访问。响应的HTTP状态代码为401。

并在回复中:

  

没有指定apiKey

这是Postman请求: enter image description here

有谁知道为什么?有什么建议吗?为什么它在Postman上正常工作而没有处理我的代码呢?

谢谢!

2 个答案:

答案 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凭据等