由于跨域资源共享,您的 XMLHTTPRequest 被阻止。
要了解更多信息,您应该查看关于 CORS 的维基百科文章。
要了解如何在服务器端实现它,请查看enable-cors.org。
不幸的是,他们在 enable-cors.org 上没有 Ruby 版本(我现在正在处理一个拉取请求),同时你可以在任何基于机架的服务器上使用这样的东西:
class CORSController < ActionController::Base
before_filter :cors_preflight_check
after_filter :cors_set_access_control_headers
def cors_set_access_control_headers
headers['Access-Control-Allow-Origin'] = '*'
headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS'
headers['Access-Control-Max-Age'] = "1728000"
end
def cors_preflight_check
if request.method == "OPTIONS"
headers['Access-Control-Allow-Origin'] = '*'
headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS'
headers['Access-Control-Allow-Headers'] = 'X-Requested-With'
headers['Access-Control-Max-Age'] = '1728000'
render :text => '', :content_type => 'text/plain'
end
end
end
编辑:
我应该补充一点,任何从 CORSController 继承的类都将允许 CORS 请求,如果您希望全局使用 CORS,您应该将其添加到您的 ApplicationController。
此外,将Access-Control-Allow-Origin设置为通配符是潜在的安全风险。