我想将数据发布到另一个域并接收操作返回的确认消息。所以为了让 CORS 工作,我有一个选项操作来处理我的 rails 控制器中的 OPTION HTTP 方法(在与 POST 相同的路径上),目前看起来像这样:
def options
headers['Access-Control-Allow-Origin'] = "*"
headers['Access-Control-Allow-Methods'] = 'GET, POST, PUT, OPTIONS'
headers['Access-Control-Max-Age'] = '100'
headers['Access-Control-Allow-Headers'] = '*, x-requested-with, content-type, accept, origin, referer, user-agent'
render :text => '', :content_type => 'text/plain'
end
我的 jquery ajax 请求如下所示:(coffeescript)
$.ajax
type: 'POST'
url: 'http://my-other-domain.com/'
data: data
contentType: "application/json; charset=UTF-8"
crossDomain: true
success: (response) =>
if response.data_saved
...
error: () => ...
但是......它不起作用。
OPTIONS 请求似乎正在工作,返回Access-Control-Allow-Origin:*
和所有,服务器接收并处理发布的数据,但 Chrome 仍然抛出
XMLHttpRequest cannot load http://my-other-domain.com/. Origin http://my-main-domain.com is not allowed by Access-Control-Allow-Origin.
在控制台中并触发错误回调。
我错过了什么?