编辑,更新
@底部两个域:
Rails-api: http://localhost:3000/
/config/application.rb contains
config.action_dispatch.default_headers = {
'Access-Control-Allow-Origin' => '*',
'Access-Control-Request-Method' => '*'
}
骨干JS:http://local.team.com/主.js包含:
require([
'app/App',
'backbone',
'app/Router',
'bootstrap'
],
function (app, Backbone, Router) {
"use strict";
Backbone.Model.prototype.idAttribute = "_id";
$.ajaxPrefilter( function( options, originalOptions, jqXHR ) {
options.url = "http://localhost:3000/" + options.url;
console.log('url = ', options.url)
});
window.MyApp = app;
MyApp.start();
new Router();
Backbone.history.start();
});
发送主干模型提取时:
url = http://localhost:3000/users main.js:45
OPTIONS http://localhost:3000/users 404 (Not Found) jquery-1.9.0.js:8489
OPTIONS http://localhost:3000/users Origin http://local.team.com is not allowed by Access-Control-Allow-Origin. jquery-1.9.0.js:8489
XMLHttpRequest cannot load http://localhost:3000/users. Origin http://local.team.com is not allowed by Access-Control-Allow-Origin. local.team.com/:1
在这一点上,我完全搞不清楚哪一端是错的,我会假设骨干。任何帮助非常感谢。
*更新*
我现在正在使用 Rails-CORS gem。它适用于获取请求。在我的配置/应用程序.rb 中,我有:
# https://github.com/cyu/rack-cors
config.middleware.use Rack::Cors do
allow do
origins '*'
resource '*', :headers => :any, :methods => [:get, :post, :put, :options]
end
end
GET 请求,返回 100% 罚款,没有问题,发布请求会导致:
XMLHttpRequest 无法加载本地主机:3000/用户。访问控制允许源不允许源 http://local.team.com。
您必须在用户控制器中处理其他请求。方法类型为"选项"。我猜你已经处理了 GET 请求(索引操作)。
是的,浏览器发送两个 HTTP 请求。首先是选项。第二个是 POST 或 GET,你在 Ajax 请求中定义的那个。