添加相同的站点;在经典ASP中保护Cookies
我们正在运行一个经典的ASP网站,Chrome浏览器中的Cookie存在问题。Chrome正在强制安全设置cookie() 我们正在按如下方式设置cookie:添加相同的站点;在经典ASP中保护Cookies,cookies,vbscript,asp-classic,Cookies,Vbscript,Asp Classic,我们正在运行一个经典的ASP网站,Chrome浏览器中的Cookie存在问题。Chrome正在强制安全设置cookie() 我们正在按如下方式设置cookie: Response.AddHeader "Set-Cookie", "TestCookie=This is a Test; path=/; SameSite=None; Secure" Response.Cookies("TestCookie").Expires = Date + 1 然而,Chrome也有问题,当调用不同域的资源时,
Response.AddHeader "Set-Cookie", "TestCookie=This is a Test; path=/; SameSite=None; Secure"
Response.Cookies("TestCookie").Expires = Date + 1
然而,Chrome也有问题,当调用不同域的资源时,会话会突然结束
Chrome的cookie详细信息显示:
发送请求
只有相同的站点连接
注意,没有提到我认为应该提到的“安全”。
在classic ASP中设置Cookie的正确方法是什么?当前设置响应Cookie的方法存在问题 使用
Response.Cookies
在使用Set Cookie
设置标题后,实际上是在创建一个名为“TestCookie”的新空Cookie。相反,您希望将到期日合并到现有的Set Cookie
头中
在测试代码时,以下是响应标题内容:
构建了一个函数,使使用正确的格式设置到期日变得更容易
请记住,Secure
用于安全连接
由于您正在设置两个Cookie(一个通过AddHeader()
设置,另一个通过Response.Cookie
),因此可能不清楚,但如果连接未使用HTTPS,chrome将忽略设置了Secure
的第一个Cookie。事实上,如果你在Chrome Dev Tools中查看请求,你应该会在Set Cookie
标题旁边看到一个警告符号,上面写着(当鼠标悬停在上方时)与
此集cookie具有“Secure”属性,但未通过安全连接接收
标准的Response.Cookies方法无法可靠地处理使用较低级别的Reponse.Addheader设置的Cookies。我也经历过同样的事情 我无法测试,但您可能需要尝试两种方法:
AddHeader()
设置cookie将绕过classic ASP的cookie集合。因此,经典ASP将不知道此cookie已设置。您可以尝试在一个页面上设置此cookie,将其发送到浏览器,然后在另一个页面上设置过期时间AddHeader()
指令设置过期时间。您必须查看如何在页眉级别执行此操作,但这肯定是可能的Response.AddHeader()
,设置了一个安全且仅HTTPOnly的cookie,但它没有设置过期,这会导致cookie在浏览器(选项卡)关闭时过期:
你不知为什么?抱歉@Lankymart;重新阅读你的答案,我意识到你解释了同样的情况,但措辞不同。我略读了你的答案,但没有看到你在谈论同样的问题。我不是作家,所以它不会那么有说服力。在第二行的DateAdd用法中,参数似乎是交换的,应该是
DateAdd(interval,value,Date())
?删除指向此答案的链接-。URL重写方法可能是无需修改许多经典ASP代码的最简单方法。