2

不久前,我将一个大型开发项目从使用 cookie 切换到使用 localStorage。然而,我意识到我有点枪,而且服务器上实际上需要一些 cookie。

我已将它们从 localStorage 设置回使用 cookie。但是在此期间,我在我的 Win7 开发盒上安装了 IE10,并将我的开发服务器从 IIS Express 切换到在本地运行的 ISS 7.5。

为了让 Fiddler 拦截我的本地流量,我通过 URL 访问开发页面

http://local_iis/ 

在 Hosts 文件中标识为:

local_iis 127.0.0.1

但是 IE10 在使用此测试页面访问此域的页面时无法设置 Cookie:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript">
        document.cookie = "test=value";
        alert(document.cookie); // gives "" in IE 10
    </script>
</head>
<body>

</body>
</html>

但是,从以下任一方式运行我的测试页面会设置 cookie(并提醒值)

http://localhost/
http://127.0.0.1/    

cookie 在 FF 和 Chrome 中都得到正确设置和警报,因为我只使用 IE 进行开发和测试. 我也将 local_iis 添加到受信任的站点。

仍然没有设置cookie。

有谁知道为什么?

4

1 回答 1

7

根据在此处找到的另一个主题并跟进提到的 MS 博客,发生这种情况是因为您的机器名称中有下划线!邪恶的吧?

看到这个:

Q5:当主机名/域包含下划线时,IE不会设置cookie?

A: Correct. Technically, underscore is not a DNS character, and while Windows will let you use an underscore when naming your machine, it warns you that doing so may cause problems. One such problem is that WinINET blocks attempts to set cookies on such domains.

于 2013-04-10T15:48:30.107 回答