在您使用客户端的代码 (document.cookie) 编写 cookie 时,写入值不匹配的活动服务器页面页面中 Request.Cookies 返回的值。最常见的行为是删除空格。
例如 document.cookie 使用代码编写
<SCRIPT Language=vbscript>
document.cookie = "MyCookie = Here is some text."
</SCRIPT>
Request.Cookies("MyCookie") 从返回的值是"Hereissometext。
为 HTTP 不自动编码 document.cookie 写入的值。 例如对于冒号 (:) 编码的 HTTP 将作为"%3a"返回。 Request.Cookies 期望为已编码的字符串。 如此一来未编码的字符串被解释为编码,从而导致 document.cookie 和 $ Request.Cookies 中的不同值。
当您的代码将 cookie 写入 document.cookie 时,该代码应使用 cookie 值编码的 JavaScript escape() 函数。 下面的示例将写入称为"MyCookie"cookie 和对值进行编码。
<SCRIPT Language=javascript></SCRIPT>
<SCRIPT Language=vbscript>
document.cookie = "MyCookie = " & escape("Here is some text.")
</SCRIPT>
注意: 为了要使用 JavaScript escape() 函数从 Microsoft Visual Basic 脚本 (VBScript) 必须引用 JavaScript 脚本引擎,HTML 页中的至少一次 (如示例所示)。
本文探讨了在使用document.cookie设置cookie时遇到的值与Request.Cookies返回值不一致的问题。主要原因是document.cookie不自动编码特殊字符,而Request.Cookies期望接收已编码的字符串。文章提供了使用JavaScript escape()函数编码cookie值的解决方案。
252

被折叠的 条评论
为什么被折叠?



