我正在尝试为我们的生产网站设置一个仅供内部使用的 Web 服务器,用于 QA 和开发测试。无需或无意从公司网络外部访问此开发网站。
在生产模式下,网站跨多个子域进行配置,并且站点之间共享 cookie 以共享 ASP 会话 ID。这是我的问题的关键。
例如,在生产中我们可能会有
login.example.com (handles user authentication requests)
settings.example.com (handles shared configurations)
product1.example.com (handles product specific functionality)
我能够在内部实现的最接近的事情是这个,但是......
qaserver:1234 -> login
qaserver:1235 -> settings
qaserver:1236 -> product1
...如果 IIS 的“cookie 域”设置为主机名,则用户只能使用 Firefox 登录(IE 和 Chrome 无法正确存储 cookie)。在生产中,他们将 cookie 域设置为“.example.com”,因为所有内容都是子域,所以它运行正常。如果将其设置为“。”,则没有人可以登录。我认为 Chrome 和 IE 处理 cookie 的方式与 Firefox 的方式有所不同,Firefox 不关心端口号,但其他浏览器似乎很关心。
qaserver 计算机是本地域的一部分。我对它有完全的管理员访问权限,但对任何其他计算机(如域控制器、防火墙、代理等)没有访问权限。
我只需要局域网可以访问的服务器,唯一真正的要求是站点之间能运行 cookie。
有人可以建议设置 cookie 以使其跨端口号工作吗?或者...是否可以使用主机头名称来模拟生产中使用的子域名?我可以在这台机器上安装 DNS 服务器,但我不太了解 DNS 的工作原理。
更新:
解决方法是将 cookie 域设置为空字符串。我们的 Web 部署流程对允许将该值设置为空有限制,这就是我没有尝试的原因。
答案1
最好为该站点创建主机标头,并模仿生产环境的行为。
您需要您的 DNS 管理员来创建 DNS 条目,DNS 服务器没有用,因为我猜您不能只更改需要访问该 URL 的所有客户端计算机的 DNS 服务器。
作为 DNS 条目的替代,如果只有少数客户端计算机需要访问,则可以在所有客户端计算机上添加 hosts 文件条目...