我不能使用ajax从不同的域请求API,或者我只是做错了吗?

时间:2014-08-20 14:28:10

标签: ajax cors

我在http://www.domain_a.com上有一个网站,我需要向http://domain_b.com上托管的JSON API发出请求。现在,当我尝试以下内容时:

<!DOCTYPE html>
<html>
  <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script>
      $(document).ready(function() {
      $.getJSON({
        url: "http://domain_b.com/service_api/v1/find.json?name=abcd", 
        dataType: 'json',
        beforeSend: setHeader,
        success: function(data) {console.log (data)}  
      });

      function setHeader (xhr) {
        console.log (xhr);
        xhr.setRequestHeader("Authorization", "sdkfhberg83hr87234bf87r432");
        console.log (xhr);
      }
      });    
    </script>
  </head>
  <body>
  </body>
</html>

我在firebug控制台中收到此错误:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://domain_b/service_api/v1/find.json?name=abcd. This can be fixed by moving the resource to the same domain or enabling CORS.

我做错了什么,或者根本不允许(会让我感到惊讶)?

1 个答案:

答案 0 :(得分:0)

跨域资源共享是您想要的。基本上,出于安全原因,同源策略仅允许在同一域上运行的脚本访问每个其他DOM。因此,除非您调用的API不支持 - 即。有以下标题用于响应 - “Access-Control-Allow-Origin”,“*”,不允许此调用。

不完全确定 - 但请尝试使用PHP proxy

此外,this可能对您有用。