2013-03-28 104 views
3

有没有人知道为什么当我运行一个经典的asp网站和asp.net MVC并排,当我在经典asp中创建cookie,然后.net集成管道,添加path =“/”到每个人的结尾,因此创造重复。被重写的Cookie路径

例如。如果我使用“/ test”路径创建两个cookie,那么当我运行这个经典的asp页面时,会使用path =“/”创建另外两个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:我设置的饼干这样的在传统的ASP:

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

+0

您能否显示创建cookie的经典ASP代码 – 2013-04-25 13:26:20

+0

您如何设置cookie?这可能与此问题有关:http://connect.microsoft.com/VisualStudio/feedback/details/774743/setcookie-does-not-overwrite-cookie-written-in-module-when-using-iis-集成管道 – 2013-04-26 08:37:58

+0

已更新问题。 – Schotime 2013-04-26 08:59:01

回答

0

你确定这是你确切的代码,如传统的ASP不需要支架或分号在最后,我想知道你是否有错误恢复下一个设置,这将跳过这条线,并抛出你一个红色的鲱鱼;你可以试试这个:

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

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

还是你需要一个尾随斜线? (我还没有接触到一个开发环境,现在

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

使用** JScript **的经典ASP有括号。我敢肯定,你不需要在路径上的结束斜杠。 – Schotime 2013-04-27 03:22:06

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

0

你试过:

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