2

我正在从不同的来源向我的服务器发出 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. 
4

1 回答 1

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

于 2013-05-02T14:39:13.307 回答