Rails Cross Origin Headers Set,XMLHttpRequest无法加载http://www.d1.com/sign_in,Access-Control-Allow-Origin不允许某些内容

时间:2013-04-18 11:37:34

标签: ruby-on-rails ruby ajax browser cross-domain

我正在从不同的来源向我的服务器发出Ajax POST请求以进行用户登录。我在application_controller.rb中正确设置了Cross Origin标头:

def set_access_control_headers

  if request.options?
    headers['Access-Control-Allow-Origin'] = '*' 
    headers['Access-Control-Request-Method'] = '*'
    headers['Access-Control-Allow-Credentials'] = "true"
  end
end

但我还是得到了:

XMLHttpRequest cannot load http://www.d1.com/sign_in. Origin http://www.d2.com is not allowed by Access-Control-Allow-Origin. 

1 个答案:

答案 0 :(得分:3)

根据当前规范,您没有正确设置Access-Control-Allow-Origin或Access-Control-Request-Method Response标头。

Access-Control-Allow-Origin需要是特定域。如果您有多个域应该被允许访问,请考虑使用服务器端的域或子域的白名单来匹配请求源,如果请求源与白名单中的条目匹配,请求源作为访问 - Control-Allow-Origin响应标头值。

然后将Access-Control-Request-Method Response标头设置为您希望允许的方法,例如:GET,POST,OPTIONS