有一个标头 Max-Age 允许指定 cookie 的到期时间。不幸的是,Internet Explorer 6、7、8 和可能更高版本不支持 Max-Age,并且需要带有 GMT 绝对日期的 Expires 标头。
特定客户端上的 GMT 时间和 TZ 设置可能不正确的情况并不少见。考虑没有正确定义他的时区并手动调整时钟的用户。
不仅如此,有时可能会有很多分钟的显着时钟偏差,而用户没有意识到它们。
在这种情况下,它的 GMT 时间可能会偏移几个小时。实际上,它会阻止服务器设置任何需要短过期时间的 cookie。考虑如果 TZ 不正确,则永远不会设置最长 10 分钟的 cookie。
关于如何解决问题的原始想法(不起作用或有问题):
- 当然最好是使用 Max-Age 甚至同时指定两者,因为所有浏览器都会忽略“过期”部分 - 但它在 IE 中不起作用
- 我想到的另一种方法是设置 Date: header 希望 IE 会知道计算差异以解决时钟偏差......但这对 IE 没有帮助。
- 根据请求(使用 JavaScript)从客户端获取时间,然后计算时钟差异,然后根据需要调整 Expire 标头。然而,它需要复杂的数据操作,包括将时间提交给服务器的某种方式。
问题:
- 在 IE 中处理 cookie 的过期时间的最佳和常见做法是什么?
- 你如何在你的应用程序中做到这一点