【问题标题】:BackboneJS + Ruby on Rails (rails-api) cross domain issuesBackboneJS + Ruby on Rails (rails-api) 跨域问题
【发布时间】:2013-09-10 19:04:33
【问题描述】:

编辑、更新@底部

两个域:

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

在这一点上,我完全不知道哪一端有问题,我会假设 Backbone。非常感谢任何帮助。

* 更新 *

我现在正在使用 Rails-CORS gem。它适用于获取请求。在我的 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% 没问题,发布请求导致:

XMLHttpRequest 无法加载 localhost:3000/users。 Access-Control-Allow-Origin 不允许来源http://local.team.com

【问题讨论】:

    标签: javascript ruby-on-rails ruby backbone.js cross-domain


    【解决方案1】:

    您必须在用户控制器中处理额外的请求。方法类型是 OPTIONS。我猜你已经处理了 GET 请求(索引操作)。

    是的,浏览器发送了两个 HTTP 请求。首先是选项。第二个是 POST 或 GET,即您在 Ajax 请求中定义的那个。

    【讨论】:

    • 所以我将代码放在控制器中:? config.action_dispatch.default_headers
    • @azz0r 显示开发日志。您的应用如何响应 OPTIONS 和 POST 请求?
    猜你喜欢
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多