我正在尝试为我们的生产网站设置一个仅供内部使用的 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 部署过程对允许将该值设置为空白有限制,这就是我没有尝试的原因。
您最好为该站点创建主机标头,并模仿生产环境的行为。
您需要您的 DNS 管理员来创建 DNS 条目,DNS 服务器是没有用的,因为我猜您不能只更改需要访问该 URL 的所有客户端计算机的 DNS 服务器。
作为 DNS 条目的替代方法,如果只有少数需要访问,您可以在所有客户端计算机上添加主机文件条目...