请求的资源上不存在 'Access-Control-Allow-Origin' header。因此不允许来源 'null' 访问
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access
我正在尝试使用 omniauth 将我的客户定向到外部服务授权页面。我的客户端使用 ember.js 而我的服务器是 rails 服务器。就目前情况而言,我能够在我的服务器端毫无问题地进行调用,但我的客户端不会重定向,给我一个错误阅读
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 404.
做一些研究表明我需要使用我已经安装和配置的 CORS。现在我只需要知道我在哪里以及如何将 access-control-allow-origin
header 应用到我的代码中。谁能帮我解决这个问题?
我的路线:
get 'auth/:provider/callback' => 'sessions#create'
我的会话控制器:
class SessionsController < ApplicationController
def create
@request.env
auth = request.env['omniauth.auth']
Account.recieve_donation(auth)
end
end
这是你必须做的 如果你正在发出 GET 请求,你的客户端请求必须发送 Origin header 然后你的服务器必须发送Access-Control-Allow-Origin header 在响应中。 这两个 header 的值必须相同才能允许跨源资源共享。
我找到了 ruby gem Rack CORS Middleware 来解决 'Access-control-allow-origin' header 问题。
如果您不想使用ruby gem,请在您的控制器中添加以下代码(application_controller, other_name_controller)
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
我正在尝试使用 omniauth 将我的客户定向到外部服务授权页面。我的客户端使用 ember.js 而我的服务器是 rails 服务器。就目前情况而言,我能够在我的服务器端毫无问题地进行调用,但我的客户端不会重定向,给我一个错误阅读
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 404.
做一些研究表明我需要使用我已经安装和配置的 CORS。现在我只需要知道我在哪里以及如何将 access-control-allow-origin
header 应用到我的代码中。谁能帮我解决这个问题?
我的路线:
get 'auth/:provider/callback' => 'sessions#create'
我的会话控制器:
class SessionsController < ApplicationController
def create
@request.env
auth = request.env['omniauth.auth']
Account.recieve_donation(auth)
end
end
这是你必须做的 如果你正在发出 GET 请求,你的客户端请求必须发送 Origin header 然后你的服务器必须发送Access-Control-Allow-Origin header 在响应中。 这两个 header 的值必须相同才能允许跨源资源共享。
我找到了 ruby gem Rack CORS Middleware 来解决 'Access-control-allow-origin' header 问题。
如果您不想使用ruby gem,请在您的控制器中添加以下代码(application_controller, other_name_controller)
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