当我经常运行经典的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;");
答案 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;");