IE 10没有设置/发送cookie(从js)到服务器

Mor*_*ael 2 javascript cookies localhost internet-explorer-10

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

我已将这些设置从localStorage设置为使用cookie.但是在过渡期间,我在我的Win7开发盒上安装了IE10,并将我的开发服务器从IIS Express切换到本地运行的ISS 7.5.

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

http://local_iis/ 
Run Code Online (Sandbox Code Playgroud)

在Hosts文件中标识为:

local_iis 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

但是,在使用此测试页访问此域中的页面时,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>
Run Code Online (Sandbox Code Playgroud)

但是,从下面的任何一个运行我的测试页面设置cookie(并警告值)

http://localhost/
http://127.0.0.1/    
Run Code Online (Sandbox Code Playgroud)

在FF和Chrome中都可以正确设置和警告cookie,因为我只使用IE进行开发和测试我已将安全设置更改为允许安全选项卡下的"隐私"选项卡和"本地Intranet"和"可信站点"区域中的所有内容.我也将local_iis添加到了受信任的站点.

仍然没有设置cookie.

有谁知道为什么?

And*_*kin 7

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

看到这个:

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

答:正确.从技术上讲,下划线不是DNS字符,虽然Windows会让您在命名机器时使用下划线,但它会警告您这样做可能会导致问题.一个这样的问题是WinINET阻止尝试在这些域上设置cookie.