我的Rails 3 应用程序使用 mongodb simple rest api 时遇到跨域资源共享(CORS) 问题。我有一些 CoffeeScript/JavaScript 正在尝试使用mongodb simple rest api,但是 Chrome 会通过以下控制台消息阻止它:
XMLHttpRequest 无法加载 http://127.0.0.1:28017/my-db/my-collection/。Access-Control-Allow-Origin 不允许来源 http://127.0.0.1:3000。
我从这篇博文中添加了两个控制器方法:
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'] = 'Content-Type, X-Requested-With, X-Prototype-Version'
headers['Access-Control-Max-Age'] = '1728000'
render text: '', content_type: 'text/plain'
end
end
我可以看到我的 Rails 页面的标题。但是,它仍然无法正常工作。
我最好的猜测是,mongodb simple rest api 使用的任何 Web 服务器都需要包含标头,而不是我的 Rails 应用程序。 任何人都可以确认或否认这一点吗?
我还在某处读到我可以在 nginx 中使用代理重写规则。但是,这有点乏味,特别是因为我没有运行 nginx 进行开发,只在生产服务器上运行。