gpt4 book ai didi

javascript - 从 Rails 设置 document.domain 的 DRY 方式

转载 作者:行者123 更新时间:2023-11-28 06:18:57 24 4
gpt4 key购买 nike

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

使其不那么简单的条件

  1. 在域为 localhost 的开发或测试环境中,这应该不是问题。
  2. 还需要在某些不加载主 JavaScript 文件的页面上进行设置

条件 1 让我认为我要么想要依赖从 location.host 解析根域的正则表达式,要么在 erb 中进行切换.

条件2让我觉得最好编写一次并将其放入 Assets 管道中并在必要时包含它。

最佳潜在解决方案

创建一个类似 domain_setter.js.erb 的文件(如下内容),将其添加到预编译列表中,并将其包含在所有必要的位置(\\= require domain_setter 在 list 中或 javascript_include_tag 'domain_setter' 对于没有 list 的页面)。

<%- 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];
}
})();

tl;博士

使用 Rails 设置多个页面的 document.domain 的 DRY 方法是什么?

最佳答案

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

这是一个可以帮助您入门的 Rails 库:https://github.com/cyu/rack-cors#rails

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

关于javascript - 从 Rails 设置 document.domain 的 DRY 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35705950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com