You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails + Hotwire框架中Turbo无法触发跨子域名链接跳转的解决方案咨询

默认情况下,Turbo Drive仅加载与当前文档同源(即相同协议、域名和端口)的URL,访问其他任意URL时会回退到全页面加载。

实现同一根域名下不同子域名Turbo Drive正常工作的方法

你可以通过以下配置实现需求:

  • 配置Turbo允许的跨源请求列表
    Turbo 7及以上版本提供了allowedRequestOrigins配置项,支持传入正则表达式匹配允许的请求源,假设你的根域名是example.com,配置示例如下:
    // 匹配所有example.com的子域名,可根据实际使用的协议、端口调整正则规则
    Turbo.config.allowedRequestOrigins = [/^https?:\/\/.*\.example\.com(:\d+)?$/]
    
  • 统一根域名下的Cookie作用域
    要保证跨子域名请求可正常共享会话状态,需要将会话Cookie的作用域设置到根域名,不同后端框架配置逻辑一致,以Rails为例:
    # config/initializers/session_store.rb
    Rails.application.config.session_store :cookie_store, 
      key: '_your_app_session', 
      domain: :all, # 自动适配当前根域名
      tld_length: 2 # 顶级域名长度,如.cn后缀的域名需调整为3
    
    其他框架可查阅对应会话配置文档,将Cookie的Domain属性设置为你的根域名即可。
  • 调整站点安全策略
    • 如果站点开启了内容安全策略(CSP),需要将所有相关子域名加入connect-src指令的允许列表,避免Turbo的异步请求被拦截
    • 如果使用了Turbo Frame/ Turbo Stream功能,需要在CSP的frame-ancestors指令中添加所有子域名,避免子域名页面被嵌套拦截,不要配置过严的X-Frame-Options响应头。

内容的提问来源于stack exchange,提问作者hananamar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 00:45:02