Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从Rails设置document.domain的干燥方式_Javascript_Ruby On Rails_Cors_Cross Domain - Fatal编程技术网

Javascript 从Rails设置document.domain的干燥方式

Javascript 从Rails设置document.domain的干燥方式,javascript,ruby-on-rails,cors,cross-domain,Javascript,Ruby On Rails,Cors,Cross Domain,我有一个Rails应用程序,它使用两个子域,希望用JavaScript进行通信。有效设置document.domain=mydomain.com的最简单方法是什么 使其不那么直截了当的条件 在域为localhost的开发或测试环境中,这应该不是问题 这也需要在某些不加载主JavaScript文件的页面上设置 条件1让我觉得我要么想要依赖一个正则表达式,它从location.host解析根域,要么在erb中进行切换 条件2让我觉得最好写一次,并将其放入资产管道中,必要时将其包括在内 最佳势解 创建

我有一个Rails应用程序,它使用两个子域,希望用JavaScript进行通信。有效设置
document.domain=mydomain.com
的最简单方法是什么

使其不那么直截了当的条件
  • 在域为
    localhost
    的开发或测试环境中,这应该不是问题
  • 这也需要在某些不加载主JavaScript文件的页面上设置
  • 条件
    1
    让我觉得我要么想要依赖一个正则表达式,它从
    location.host
    解析根域,要么在
    erb
    中进行切换

    条件
    2
    让我觉得最好写一次,并将其放入资产管道中,必要时将其包括在内

    最佳势解 创建一个类似于
    domain\u setter.js.erb
    (以下内容)的文件,将其添加到预编译列表中,并将其包含在所有必要的位置(清单中的
    \\=require domain\u setter
    javascript\u include\u标记“domain\u setter”
    ,用于没有清单的页面)

    tl;博士
    使用Rails设置多个页面的
    document.domain
    是一种干巴巴的方法吗?

    我认为您正在寻找跨源资源共享(CORS)。这允许javascript跨不同的域发出AJAX
    $.get/post
    请求

    下面是一个rails库,让您开始学习:


    您需要将
    origins
    属性设置为
    yoursubdomain.herokuapp.com

    我想您正在寻找跨源资源共享(CORS)。这允许javascript跨不同的域发出AJAX
    $.get/post
    请求

    下面是一个rails库,让您开始学习:


    您需要将
    origins
    属性设置为
    yoursubdomain.herokuapp.com

    这与CORS密切相关,但我没有在两个不同的域之间通过Ajax进行通信,而是在不同的子域上寻找两个页面,通过JavaScript进行通信。举个小例子,在任何页面上打开控制台,然后进入
    window.open('/')
    。在刚刚打开的窗口中,在控制台中输入
    window.opener.console.log('back to your original page')
    ,您将在原始窗口的控制台中看到该输出。这是不可能跨子域的,除非它们的域设置得更低。啊,你看过PostMessageAPI了吗?我只是看了一下,它非常有用,特别是对于与其他领域的通信。我觉得当两个窗口都有相同的
    document.domain
    时,直接调用参数会更安全、更方便。这与CORS密切相关,但我不是在两个不同的域之间通过Ajax进行通信,而是在不同的子域上寻找两个页面通过JavaScript进行通信。举个小例子,在任何页面上打开控制台,然后进入
    window.open('/')
    。在刚刚打开的窗口中,在控制台中输入
    window.opener.console.log('back to your original page')
    ,您将在原始窗口的控制台中看到该输出。这是不可能跨子域的,除非它们的域设置得更低。啊,你看过PostMessageAPI了吗?我只是看了一下,它非常有用,特别是对于与其他领域的通信。我觉得当两个窗口都有相同的
    document.domain
    时,直接调用参数会更安全、更方便。要添加一些背景,这是允许同一个域的不同子域上的两个页面能够通过JavaScript进行通信。i、 e.我希望
    foo.mydomain.com
    bar.mydomain.com
    进行通信,这要求它们都有一个较低的域集
    mydomain.com
    。为了添加一些背景,这是为了允许同一域的不同子域上的两个页面能够通过JavaScript进行通信。i、 e.我希望
    foo.mydomain.com
    bar.mydomain.com
    进行通信,这要求两者都有一个较低的域集
    mydomain.com
    <%- if Rails.env.production? %>
      document.domain = 'mydomain.com';
    <%- end %>
    
    (function() {
      var domain = /^(?:https?\:\/\/)?.*?([^.]+\.[^.]+?)(?:\:\d+)?$/.exec(location.host);
    
      if (domain == null) {
        document.domain = 'localhost';
      } else {
        document.domain = domain[1];
      }
    })();