我有一个内部 Web 服务器,它提供了一个界面,让我可以查看和更改该服务器上的一些数据。当我在一个位置时,我可以直接访问服务器,但从另一个位置我必须创建一个到服务器的 ssh 隧道。结果,我在浏览器中输入的 URL 会根据我的位置而变化:例如,http://myserver/blah
与http://localhost:8000/blah
. 它是同一台服务器,只是主机名不同。
这很不方便,因为有时我会忘记将更改保存在一个位置,而当我转到另一个位置时,突然找不到服务器。这也很不方便,因为我一直不得不重新加载页面。我想只加载一次页面并让它在任何一个地方工作。所以,我想我会在我的 XmlHttpRequest 处理中添加一些代码来检测是否找不到服务器并使用备用服务器地址重新发出请求。问题是,当这种情况发生时,我发现我的 cookie 没有发送到服务器。
我有 cookielocalhost
和myserver
. 它们实际上是同一组值,因为它实际上是同一台服务器,但显然它们是重复的,因为服务器是从两个不同的主机名访问的。如果我手动更改服务器的主机名,我没有问题,但显然这是我试图避免做的事情。
我怀疑可能存在一些安全问题,但是在重新阅读 cookie 的工作原理后,我无法确定具体可能会导致这种行为,或者如何解决它。
顺便说一句,问题不在于我正在尝试进行跨站点请求。我通过返回字段“Access-Control-Allow-Origin:*”在服务器端明确允许这样做,并且我对这部分请求没有任何问题。使用 firebug,我可以看到问题是当请求重新发送到新主机名时,即使该主机名存在 cookie,也不会发送任何 cookie。