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