Cookie路径被重写

4

有人知道为什么当我同时运行经典asp网站和asp.net MVC时,在经典asp中创建cookie后,.net集成管道会在每个cookie的末尾添加路径"path=/",从而创建重复的cookie。

例如,如果我使用路径"/test"创建两个cookie,那么当我运行这个经典asp页面时,会创建2个额外的路径为"/"的cookie。

原始标头如下:

test1=aaa; path=/test
test2=bbb; path=/test 
test1=aaa; path=/test; path=/ 
test2=bbb; path=/test; path=/

然而,我只创建了一个路径为/test的test1和test2 cookie。如果关闭集成管道,我只能得到两个带有正确路径的cookie。如果需要更多信息,请告诉我。更新:似乎当经典asp写入cookie时,它将所有内容都放入值中,包括路径,因此当.NET读取cookie时,它将整个值放入值中,然后将路径设置为'/'作为默认路径。这似乎只在访问写入cookie的同一请求时会出现问题。如果不检查Response.Cookies或Request.Cookies,则似乎不会发生这种情况。我认为这是一个错误,但我不确定是什么原因。更新2:我在Classic Asp中像这样设置cookies: Response.AddHeader("Set-Cookie", "test1=aaa; path=/test; HttpOnly;");

你能展示创建Cookies的经典ASP代码吗? - G. Stoynev
你是如何设置cookies的?这可能与这个问题有关:http://connect.microsoft.com/VisualStudio/feedback/details/774743/setcookie-does-not-overwrite-cookie-written-in-module-when-using-iis-integrated-pipeline - Erik Oosterwaal
已更新问题。 - Schotime
3个回答

0

你确定这是你的准确代码吗?因为经典ASP不需要括号或分号结尾,我在想你是否设置了On Error Resume Next,这会跳过该行并抛出一个红色的错误;你可以尝试一下这个:

Response.AddHeader "Set-Cookie", "test1=aaa; path=/test; HttpOnly"

只是一个想法,经典的ASP有时候是一种不寻常的生物。

或者你需要一个尾随斜杠吗?(我现在没有访问开发环境来测试)

Response.AddHeader "Set-Cookie", "test1=aaa; path=/test/; HttpOnly"

使用 JScript 的经典 ASP 有括号。我很确定在路径上不需要闭合斜杠。 - Schotime

0

只是一个猜测,也许空格是个问题。你尝试使用正常的Response.Cookies基础设施了吗?(请参阅MSDN)

Response.Cookies("Type") = "Chocolate Chip" 
Response.Cookies("Type").Expires = "July 31, 2001" 
Response.Cookies("Type").Path = "/" 

如果启用HttpOnly选项是必须的(请参见为Classic Asp Session Cookie设置HTTPONLY),那么这可能会成为一个问题。


0

你尝试过了吗:

Response.AddHeader("Set-Cookie", "test1=aaa; path=\"/test\"; HttpOnly;");

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