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

Tam*_* Vo 2 angularjs

使用 $http.get 时遇到问题: Cross-Origin Request Blocked: The Same Origin Policy disallows Reading the Remote Resource at ..... 这可以通过将资源移动到同一域或启用 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'];
    }
Run Code Online (Sandbox Code Playgroud)

Dim*_*mos 5

跨源请求是从一个域向另一个域(在客户端)发出的请求。出于安全原因,默认情况下它们在 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 教程
  2. W3规格