2014-06-11 142 views
1

我正在开发一个AngularJS项目,我正在使用外部的Symfony REST API。但是,我的请求被Angular/JS阻止。我做了一些研究,并添加以下行到我的应用程序的配置部分:AngularJS - 跨来源请求被阻止

angular 
.module('appName', [ 
    .... 
]) 
.config(['$routeProvider', '$httpProvider', function($routeProvider, $httpProvider) { 
    $httpProvider.defaults.useXDomain = true; 
    delete $httpProvider.defaults.headers.common['X-Requested-With']; 

.. 

然而,萤火虫还是抛出一个错误:跨源请求封锁.. 当我看着萤火虫的“NET”选项卡,这是我得到: NET tab screenshot

对这个问题的任何想法? 在此先感谢。

回答

4

看起来像你的Symfony2应用程序返回在OPTIONS请求响应不适当的CORS头......

我在与几个项目angularjs结合使用Symfony2中,并没有什么对角方特,使其工作。

要返回正确的CORS标题,我在我的symfony2应用程序中使用https://github.com/nelmio/NelmioCorsBundle

有一个从开发服务器配置:

nelmio_cors: 
    defaults: 
     allow_credentials: false 
     allow_origin: [] 
     allow_headers: [] 
     allow_methods: [] 
     expose_headers: [] 
     max_age: 0 
     hosts: [] 
    paths: 
     '^/api/': 
      allow_origin: ['*'] 
      allow_headers: ['X-Requested-With','Content-Type','Authorization'] 
      allow_methods: ['POST', 'PUT', 'GET', 'DELETE'] 
      allow_credentials: true 
      max_age: 3600 
+0

谢谢你这么一个PHP代理页面很多,男人! –

+0

您的回答成就了我的一天! – ZvL

0

它没有为我工作。所有的东西试过后,我创建了我的本地主机,做以下

<?php echo file_get_contents($_REQUEST['url']); ?> 

我的角度控制器调用代理

(function(){ 
    var app=angular.module('xxx',[]); 

    app.controller('AdsController', ['$http', function($http) 
    { 
     var ads = this; 
     ads.deals = []; 
     $http.get('/proxy.php?url=whatvererurl'){ 
      ads.deals = data; 
      console.log(ads.deals); 
     }); 
    }]); 

} 
)(); 

只是不要忘了编码URL