2014-06-11 190 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