Cookie路径被重写

时间:2013-03-28 05:34:25

标签: asp.net cookies asp-classic

当我经常运行经典的asp网站和asp.net MVC时,有谁知道为什么当我在经典的asp中创建cookie,然后是.net集成管道时,在每个结尾处添加path =“/”他们,因此创造了重复。

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

原始标题看起来像这样。

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

但是我只创建了一个test1和test2 cookie,路径设置为/ test。

如果关闭集成管道,我只能获得具有正确路径的两个cookie。 如果需要进一步的信息,请告诉我。

更新:似乎当经典的asp写入cookie时,它会将所有内容放入包含路径的值中,因此当.NET读取cookie时,它会将整个数据放入值中,然后设置路径为'/'作为默认值。当您在写入的同一请求中访问cookie时,这似乎只是一个问题。如果您不检查Response.Cookies或Request.Cookies,这似乎不会发生。我相信这是一个错误,但我不确定是什么。

Update2:我在Classic Asp中设置了这样的Cookie:

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

3 个答案:

答案 0 :(得分:0)

你确定这是你的确切代码吗,因为经典的ASP不需要括号或末尾的分号,我想知道你是否有On Error Resume Next set,它会跳过该行并抛出你是红色的鲱鱼;你可以尝试一下:

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

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

或者你需要一个尾随斜线? (我现在无法访问开发环境进行测试

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

答案 1 :(得分:0)

只是一个疯狂的猜测,但也许空白是一个问题。您是否尝试使用正常的Response.Cookies基础架构(see msdn)

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

要启用HttpOnly选项会出现问题,如果这是强制性的(请参阅Setting HTTPONLY for Classic Asp Session Cookie)。

答案 2 :(得分:0)

你试过了吗?

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