跨源请求被阻止:同源策略不允许在.....处读取远程资源

时间:2015-05-12 06:53:02

标签: angularjs

使用$ http.get时遇到问题: 跨源请求被阻止:同源策略不允许读取远程资源.....这可以通过将资源移动到同一域或启用CORS来修复

$http.get('...').success(function(data){
        console.log(status);
    }).error(function(data){
        //console.log(data)
    });
app.config(['$httpProvider', function($httpProvider) {
        $httpProvider.defaults.useXDomain = true;
        delete $httpProvider.defaults.headers.common['X-Requested-With'];
    }

1 个答案:

答案 0 :(得分:3)

跨域请求是从一个域到另一个域(在客户端)发出的请求。出于安全原因,默认情况下禁止在Web中使用它们。因此,如果您在http://www.yours.com中有一个网页向http://www.other.com/get/resource发出AJAX请求,那么此AJAX请求将被拒绝。可以通过3种方式解决此问题:

  • 将API(/ get / resource)“重新定位”到www.yours.com域(即http://www.yours.com/get/resource),以便AJAX请求不再跨越域。
  • 转换应用程序的体系结构,以便来自http://www.yours.com的请求在后端(也就是AJAX的形式)中生成,然后传递到您的网页上。
  • http://www.other.com中启用服务器以允许来自http://www.yours.com的CORS请求。这可以通过在服务器的响应中添加标头Origin: http://www.yours.com来完成。因此,它要求您可以访问第二台服务器的配置。

CORS的其他资源:

  1. HTML5 turorial
  2. W3 specification