将具有angular的get请求发送到Origin http:// localhost:3000

时间:2016-12-15 06:15:41

标签: ruby-on-rails angularjs node.js cross-domain

我是棱角分明的新手。在这里,我尝试使用“http://localhost:3000/”从rails服务器调用API。

我得错了
  

对预检请求的响应未通过访问控制检查:否   “访问控制允许来源”

我添加了'CORS'chrome扩展程序来修复它。现在问题是我的请求是传递给localhost:3000作为[OPTIONS],而我希望它作为获取请求

'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”):

任何帮助都将受到赞赏

2 个答案:

答案 0 :(得分:0)

修改您的应用配置

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

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

答案 1 :(得分:0)

这不是你的角度js方面的问题。您必须在服务器端允许交叉来源请求