允许在Rails服务器上进行跨域访问

Kah*_*hsn 3 javascript ruby-on-rails request angularjs server

我在Angular中有一个前端Web应用程序,在Rails中有后端.从前端我有javascript代码发出POST http请求:

$scope.onSave = function () {
        $http.post('http://localhost:3000/documents', { user: $scope.user, formData: $scope.formData }, function (response) {
            $scope.isSaved = true;
            console.log(response);
            if (response.success) {
                console.log("It has been successfully saved!")
            }
        });
}
Run Code Online (Sandbox Code Playgroud)

在提交按钮上,我调用上面的功能:

<button type="submit" class="btn btn-success" ng-click="onSave()">Submit</button>
Run Code Online (Sandbox Code Playgroud)

然后我得到一个错误说

XMLHttpRequest无法加载http:// localhost:3000/documents.对预检请求的响应未通过访问控制检查:请求的资源上不存在"Access-Control-Allow-Origin"标头.因此不允许来源' http:// localhost:3001 '访问.响应具有HTTP状态代码404.

我知道我需要允许跨域访问,但我不确定如何在Rails服务器端实现这一点.

Chr*_*ris 6

  1. rack-cors gem 添加到Gemfile中.

  2. 将其添加到config/application.rb文件中.

config.middleware.insert_before 0, "Rack::Cors" do allow do origins '*' resource '*', :headers => :any, :methods => [:get, :post, :options] end end