我有一个带有Node / Express后端的Angular应用程序。我刚刚在Internet Explorer(11)中对它进行了测试,发现了一个奇怪的身份验证错误。
在某些时候,我更新了身份验证详细信息,这些详细信息存储在cookie中的Json Web Token中。在chrome上,我只是设置一个具有相同名称的新cookie,它工作正常。然而,使用IE我发现它没有使用新的cookie,并发现它实际存储了两个:
两者都有相同的名称。它们都是由相同的代码在同一个域中提供的(虽然我们确实托管了第二个子域,但它与此站点无关)。
设置cookie只是:
response.cookie('jwt', token, { maxAge: 60 * 60 * 48 * 1000, httpOnly: true });
使用cookie-parser。
所有其他问题似乎表明这是子域的问题。但我看不出如何指定/设置它?
它在开发中本地托管很好,但在生产中部署时显示了这个问题。
答案 0 :(得分:0)
我通过在设置时明确设置cookie的域来解决这个问题,而不是将其留空。
但是,由于Internet Explorer似乎完全忽略+----+---------------------+---------------------+----------+-------+
| id | starttime | endtime | duration | batch |
+----+---------------------+---------------------+----------+-------+
| 1 | 2017-10-06 10:59:48 | 2017-10-06 10:59:58 | 10 | 1 |
| 2 | 2017-10-06 11:00:02 | 2017-10-06 11:00:06 | 4 | 1 |
| 3 | 2017-10-06 11:00:15 | 2017-10-06 11:00:22 | 7 | 1 |
| 4 | 2017-10-06 11:00:30 | 2017-10-06 11:00:39 | 9 | 1 |
| 5 | 2017-10-06 15:34:31 | 2017-10-06 15:34:45 | 14 | 2 |
| 6 | 2017-10-06 15:34:48 | 2017-10-06 15:34:56 | 8 | 2 |
| 7 | 2017-10-06 15:34:52 | 2017-10-06 15:34:59 | 7 | 2 |
+----+---------------------+---------------------+----------+-------+
上的cookie,我不得不设置添加行:
localhost
到127.0.0.1 mydevdomain.com
的Windows主机文件。
然后,我可以使用选项C:\Windows\System32\Drivers\etc\hosts
设置Cookie,并且它在开发和生产时(将域更新到生产域)时按预期运行。