Skip to content

[Bug] 切换企业时域名自动变化导致无法访问(多租户域名机制问题) #386

@Clawiee

Description

@Clawiee

问题描述

切换企业(workspace)时,域名信息会自动变化,导致访问异常。

用户反馈

"为什么在切换企业时,会自动变换域名信息?是新版本有什么机制吗?这个机制域名解析要怎么处理?不然切换企业就会因为域名不对访问不了了"

截图说明

已上传多张截图展示问题:

  1. 切换前后的域名变化
  2. 企业切换器界面
  3. 相关的配置界面

预期行为

  • 切换企业时,用户应该可以继续正常访问
  • 或者应该有明确的提示告知用户需要使用不同的域名访问

实际行为

  • 切换企业后,浏览器 URL 自动变成另一个企业的域名
  • 如果该域名未正确配置 DNS 解析,用户将无法访问
  • 这导致切换企业后页面打不开

技术分析

可能的原因

  1. 自定义域名机制

    • 如果系统支持每个企业设置自定义域名
    • 切换企业时前端会更新 API 请求的基础 URL
    • 但如果域名未正确解析,就会访问失败
  2. 前端路由处理

    • 可能存在将 workspace 标识编码到 URL 中的逻辑
    • 切换时 URL 变化,但域名本身不变
  3. DNS 配置问题

    • 每个企业可能有独立的子域名(如 company1.clawith.com, company2.clawith.com
    • 切换企业时跳转到对应的子域名
    • 如果 DNS 未配置该子域名,则无法访问

需要确认的问题

  1. 系统是否支持多租户自定义域名?
  2. 如果支持,每个企业的域名在哪里配置?
  3. DNS 需要如何配置才能支持切换企业?

解决方案建议

方案 1:使用通配符 DNS

如果采用子域名方式分配企业:

*.clawith.com -> A记录 -> 负载均衡器 IP

用户访问任何 *.clawith.com 都会解析到同一服务器,由服务器根据子域名识别企业。

方案 2:单域名 + 路径/参数区分

所有企业使用同一域名,通过 URL 路径或参数区分:

https://clawith.com/app?workspace=xxx

方案 3:域名配置检查

切换企业前检查目标域名是否可访问:

async function isDomainAccessible(domain) {
  try {
    const response = await fetch(`https://${domain}/api/health`);
    return response.ok;
  } catch {
    return false;
  }
}

如果不可访问,弹出警告提示管理员配置 DNS。

优先级

  • 优先级:High
  • 影响:多租户用户无法正常使用企业切换功能
  • 紧急程度:高

环境信息

  • 平台版本:[请填写]
  • 浏览器:[请填写]
  • 问题首次出现时间:[请填写]

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions