如何在ASP Classic - VBScript中使用response.cookie进行编码?

3

我正在尝试设置一个值为 /sv/en 的 cookie,但是在 cookie 中,/ 最终变成了 %2F,因此我想知道如何编码或者其他方法来代替 /。

现在我正在使用以下代码来设置 cookie。

 Response.Cookies("googtrans")="/sv/en"
 Response.Cookies("googtrans").path = "/"
 Response.Cookies("googtrans").expires = "2038-01-01 10:00"
 Response.Cookies("googtrans").domain = ".mypage.se"

那么如何在cookie中写入斜杠(/)呢?非常感谢!
2个回答

2

通过 Response.Cookies 集合,URL 编码(反之,URL 解码)是隐式的。

为了防止这种情况,您需要使用 Response.AddHeader 设置原始 cookie。

Response.AddHeader "Set-Cookie", "googtrans=/sv/en; expires=2038-01-01 10:00; domain=.mypage.se; path=/"

谢谢,Kul-Tigin。它有效了!但是如果我想将域设置为www.mypage.se和.mypage.se怎么办?如果我使用Response.AddHeader "Set-Cookie","googtrans=/sv/en; expires=2038-01-01 10:00; domain=www.mypage.se; path=/",那么它就会变成.www.mypage.se而不是www.mypage.se——请注意www前面的点。谢谢。 - Claes Gustavsson
我只想设置谷歌cookie“googtrans”永不过期,通过添加标头或JavaScript等方式实现,这几乎是正确的 :-) - Claes Gustavsson
@ClaesGustavsson,.mypage.se 将适用于 mypage.se 的所有子域,包括域名本身。 - Kul-Tigin
@ClaesGustavsson 然后通过删除“expires=2038-01-01 10:00;”部分,为“mypage.se”和“www.mypage.se”设置两个不同的(`Response.AddHeader`)原始cookie。 - Kul-Tigin
好的,如果我设置了这个:Response.AddHeader "Set-Cookie","googtrans=/sv/en; expires=Thu, 18 Dec 2038 12:00:00; domain=www.mypage.se; path=/",那么cookie域就会变成“.www.mypage.se”而不是“www.mypage.se”,它在“www”之前添加了一个点,这就是问题所在。 - Claes Gustavsson

0

您无法通过ASP更改此行为,因为它是浏览器的功能。

浏览器以这种方式存储/传输Cookie,因为Cookie在HTTP头中通信。 斜杠根据URLEncoding模式进行编码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接