2013-03-28 111 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;");