0

編集、更新@下部

2 つのドメイン:

Rails-api:http://localhost:3000/

/config/application.rb contains
    config.action_dispatch.default_headers = {
        'Access-Control-Allow-Origin' => '*',
        'Access-Control-Request-Method' => '*'
    }

BackboneJS: http://local.team.com/ main.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 を使用しています。get リクエストに対して機能します。私のconfig/application.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% 罰金を返す、問題なし、POST リクエストの結果:

XMLHttpRequest は localhost:3000/users を読み込めません。オリジンhttp://local.team.comは Access-Control-Allow-Origin で許可されていません。

4

1 に答える 1