使用ajax请求时遇到CORS错误

15

我正在使用Ajax发送请求,但是我仍然遇到CORS的以下错误: XMLHttpRequest无法加载https://cubber.zendesk.com/api/v2/organizations/37520251/users.json。预检响应中,请求标头字段Access-Control-Allow-Origin不被Access-Control-Allow-Headers允许。 请帮我看看怎么解决(我已经看了很多相关主题,但还是不明白为什么不起作用)。

 function afficheorga(a){
      $.ajax({
          url: "https://cubber.zendesk.com/api/v2/users/"+a+"/organizations.json",
          type: 'GET',
          dataType: 'json',
          cors: true ,
          contentType:'application/json',
          secure: true,
                    headers: {
                        'Access-Control-Allow-Origin': '*',
                    },
          beforeSend: function (xhr) {
              xhr.setRequestHeader ("Authorization", "Basic " + btoa(""));
          },
          success: function (data){
            console.log(data.organizations[0].name);
            var organisation = data.organizations[0].name;
            $("#company").text(organisation);
          }
        })
    }

服务器似乎不支持CORS。服务器响应中缺少“Access-Control-Allow-Origin”头。您还通过添加自定义标头触发了预检请求。 - Yogi
Zen Desk API 表示:“仅支持用于无需身份验证的端点(例如帮助中心搜索)的 CORS 请求。任何需要身份验证的端点都不支持 CORS 请求。” 参见:Core API-Introduction - Yogi
1个回答

9
您可以通过使用jsonp来解决这个问题。将dataType更改为jsonp,这样您的GET请求应该如下所示:
function afficheorga(a){
      $.ajax({
          url: "https://cubber.zendesk.com/api/v2/users/"+a+"/organizations.json",
          type: 'GET',
          dataType: 'jsonp',
          cors: true ,
          contentType:'application/json',
          secure: true,
          headers: {
            'Access-Control-Allow-Origin': '*',
          },
          beforeSend: function (xhr) {
            xhr.setRequestHeader ("Authorization", "Basic " + btoa(""));
          },
          success: function (data){
            console.log(data.organizations[0].name);
            var organisation = data.organizations[0].name;
            $("#company").text(organisation);
          }
      })
}

5
这个操作解决了跨域错误的问题,但我发出的请求API不支持"jsonp",因此我不能使用它。 - xenurs
4
数据类型"jsonp"在正确授权后仍会出现401未授权错误。有没有解决方法? - indianLeo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接