2016-12-15 50 views
1

我是新手到角js。在這裏,我試圖從「rails」服務器調用API「http://localhost:3000/」。我得到了錯誤發送獲取請求的角度來源http:// localhost:3000

迴應預檢要求未通過訪問控制檢查:沒有 「訪問控制允許來源」

我加入「CORS」瀏覽器擴展程序來解決它。現在問題是我的請求傳遞給localhost:3000作爲[選項],並且我想要它作爲獲取請求

'use strict'; 

angular.module('dayton') 
.service('foodCategoryService', ['$http', '$window', 'authService', 'Upload', 
    function($http, $window, authService, Upload){ 
     var field = {}; 

     field.getFields = function(){ 
     console.log("---------foodCategoryService") 
     return $http.get('http://localhost:3000/api/list_food_category', { 
      headers: {Authorization: authService.getToken()} 
     }) 
     .then(function(response) { 
      return response; 
     }, function(x) { 
      $scope.authError = 'Server Error'; 
     }); 
     }; 
     return field; 
    }]); 

的ActionController :: RoutingError(無路由匹配[OPTIONS] 「/ API/list_food_category」):

任何幫助將被讚賞

+0

CORS插件只能解決它。您的服務器需要允許CORS請求。 – Ved

+0

如果您在同一臺主機上調用和託管前端,您不需要CORS擴展,即'localhost'? –

+0

不,我在這裏使用兩臺不同的服務器。 http:// localhost:8081 /是我當前的服務器,我正嘗試將api調用發送到http:// localhost:3000/ – user100693

回答

0

修改您的應用程序配置

angular.module('dayton').config(function($httpProvider){ 

    $httpProvider.defaults.headers.common = {}; 
    $httpProvider.defaults.headers.post = {}; 
    $httpProvider.defaults.headers.put = {}; 
    $httpProvider.defaults.headers.patch = {}; 
}); 
+0

你能告訴我,在while文件中是否需要添加? – user100693

+0

在你的控制器文件中 – azad

+0

我在foodCategoryController.js中添加了這行代碼但是同樣的問題我得到了。選項]。不作爲獲取請求 – user100693

0

這不是你的角度js方面的問題。你必須允許服務器端的跨源請求

+0

對於服務器端,我使用的是node.js,能否請您建議我需要爲此做哪些更改? – user100693

+0

https://developer.mozilla.org/en-US/docs/ Web/HTTP/Ac cess_control_CORS 示例代碼: app.use(function(req,res,next){ res.header(「Access-Control-Allow-Orig in「,」*「); (「Access-Control-Allow-Headers」,「Origin,X-Requested-With,Content-Type,Accept」); next(); }); – Abdullah