0

我有两个单独的应用程序在www.a.comwww.b.com. 第二个是 rails-3 应用程序。为了通过共享 cookie 在两者之间获得一些通用登录,我将所有请求重定向www.a.com/bwww.b.com. 我正在使用 apache 反向代理来实现这一点:

ProxyPass /b/ http://www.b.com/

www.a.com除了所有资产/javascript链接都是通过假设为根来形成的这一事实之外,这很好用。例如:

<%= javascript_include_tag 'js/bootstrap-datepicker'%>

正在导致链接http://a.com/assets/js/bootstrap-datepicker.js,而我希望这是http://a.com/b/assets/js/bootstrap-datepicker.js

我正在解决这个问题:

config.action_controller.asset_host = "http://a.com/analytics"

即使我发现解决方案有点hacky,这也可以正常工作。当我在我的应用程序中放置指向其他页面的链接时,真正的问题就开始了。因此,为了放置一个指向名为 的页面的链接page,我需要放入b/page我的 href。当我使用 a.com 访问应用程序时,这可以正常工作。但这不允许我使用 b.com 访问应用程序,因为链接开始指向www.b.com/b/page显然不存在的链接。

我怎样才能让整个事情正常工作,以便我可以使用 a.com 或 b.com 访问我的应用程序。

4

1 回答 1

0

您的问题的替代解决方案,使用子域和 CNAME/ALIAS 代替反向代理。

而不是将 a.com/b 反向代理到 b.com。您使用 DNS 中的 CNAME/ALIAS 将 new.a.com 指向在 b.com 上运行的应用程序。

将 cookie 域设置为 a.com 而不是 www.a.com,以便跨子域共享 cookie。

配置/初始化程序/session_store.rb

YouApplicationName::Application.config.session_store :cookie_store, key: 'some_key', :domain => ".a.com"
于 2013-04-25T10:41:34.593 回答