Ruby on rails 否';访问控制允许原点';请求的资源上存在标头。原产地';空';因此不允许访问
我正在尝试使用omniauth将我的客户端指向外部服务授权页面。我的客户端使用ember.js,我的服务器是rails服务器。就目前情况而言,我能够在服务器端进行调用,但没有什么问题,但我的客户机不会重定向,从而授权我读取错误Ruby on rails 否';访问控制允许原点';请求的资源上存在标头。原产地';空';因此不允许访问,ruby-on-rails,ember.js,cors,omniauth,access-control,Ruby On Rails,Ember.js,Cors,Omniauth,Access Control,我正在尝试使用omniauth将我的客户端指向外部服务授权页面。我的客户端使用ember.js,我的服务器是rails服务器。就目前情况而言,我能够在服务器端进行调用,但没有什么问题,但我的客户机不会重定向,从而授权我读取错误 对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。因此,不允许访问源“null”。响应的HTTP状态代码为404。 做一些研究表明我需要使用CORS,我已经安装并配置了CORS。现在我只需要知道在哪里以及如何将accesscontrolal
对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。因此,不允许访问源“null”。响应的HTTP状态代码为404。
做一些研究表明我需要使用CORS,我已经安装并配置了CORS。现在我只需要知道在哪里以及如何将accesscontrolalloworigin
头应用到我的代码中。有人能帮我解决这个问题吗
我的路线:
get 'auth/:provider/callback' => 'sessions#create'
我的会话控制器:
class SessionsController < ApplicationController
def create
@request.env
auth = request.env['omniauth.auth']
Account.recieve_donation(auth)
end
end
class sessioncontroller
如果您发出GET请求,您的客户端请求必须发送源站标头,然后您的服务器必须在响应中发送访问控制允许源站标头这两个标头的值必须相同才能允许跨源资源共享如果您发出GET请求,您的客户端请求必须发送源标头,然后您的服务器必须在响应中发送访问控制允许源标头这两个头的值必须相同才能允许跨源资源共享我找到了一个ruby gem来解决“访问控制允许源”头的问题
如果不想使用ruby gem,请在控制器(应用程序\控制器、其他\名称\控制器)中添加以下代码 我找到了一个ruby gem来解决“Access control allow origin”标题问题
如果不想使用ruby gem,请在控制器(应用程序\控制器、其他\名称\控制器)中添加以下代码
在哪里添加
Origin
标题客户端和访问控制允许Origin
标题服务器端?究竟应该是什么?如果我能够开始请求阶段,这是否意味着我已经做好了re:Access Control Allow Origin serverside?我不使用Ember和rails,但是,在所有语言和前端框架中,当您发出get请求时,您可以在请求中指定一些额外的头,同样,在rails中,您可以在发送响应时设置头。嗯,那么现在这实际上只是一个语法问题。在您熟悉的前端框架/后端MVC框架中,您将如何做到这一点?我想这至少会为我指明正确的方向;在后端,Node.js var options={url:'',头:{'Access Control Allow Origin':'abc.com'};检查Ember和Rails,了解如何在请求和响应中设置标头我在哪里添加源站
标头客户端和访问控制允许源站
标头服务器端?究竟应该是什么?如果我能够开始请求阶段,这是否意味着我已经做好了re:Access Control Allow Origin serverside?我不使用Ember和rails,但是,在所有语言和前端框架中,当您发出get请求时,您可以在请求中指定一些额外的头,同样,在rails中,您可以在发送响应时设置头。嗯,那么现在这实际上只是一个语法问题。在您熟悉的前端框架/后端MVC框架中,您将如何做到这一点?我想这至少会为我指明正确的方向;在后端,Node.js var options={url:'',头:{'Access Control Allow Origin':'abc.com'};检查Ember和Rails,了解如何在请求和响应中设置头
before_action :allow_cross_domain_access
after_action :cors_set_access_control_headers
def allow_cross_domain_access
headers['Access-Control-Allow-Origin'] = '*'# http://localhost:9000
headers['Access-Control-Allow-Headers'] = 'GET, POST, PUT, DELETE, OPTIONS'
headers['Access-Control-Allow-Methods'] = %w{Origin Accept Content-Type X-Requested-With X-CSRF-Token}.join(',')
headers['Access-Control-Max-Age'] = '1728000'
end
def cors_set_access_control_headers
headers['Access-Control-Allow-Origin'] = '*'
headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS'
headers['Access-Control-Allow-Headers'] = %w{Origin Accept Content-Type X-Requested-With X-CSRF-Token}.join(',')
headers['Access-Control-Max-Age'] = "1728000"
end