如果cookie被禁用,asp.net是否会将cookie作为会话cookie存储?

时间:2009-12-24 05:03:16

标签: c# asp.net ajax cookies client

基本上,如果客户端禁用了cookeis,我想知道是否......

dim newCookie = New HttpCookie("cookieName", "cookieValue")

newCookie.Expires = DateTime.Now.AddDays(1)

response.cookies.add(newCookie)

注意我设置了一个日期,所以它应该存储在磁盘上,如果cookie被禁用,asp.net会自动将这个cookie存储为会话cookie(这是一个cookie,一直存在于浏览器内存中,直到用户关闭浏览器,如果我没有记错)....或者asp.net根本不添加cookie(任何地方)在这种情况下我将不得不重新添加cookie到没有日期的集合(存储为会话cookie) ...当然,这需要我两次添加一个cookie ...也许第二次不必要地如果它被存储在浏览器内存中...我只是试图不存储它两次,因为它只是坏代码!任何想法,如果我需要写另一行? (这将是......)

response.cookies.add(新的HttpCookie(“cookieName”,“cookieValue”)'客户端浏览器内存中的会话cookie

谢谢你们

2 个答案:

答案 0 :(得分:1)

这篇MSDN文章似乎表明,没有内置机制来补偿用户禁用cookie。它还表示如果没有启用某种级别的cookie,会话状态将不起作用。

我认为有一种机制可以传递会话ID的查询变量,但是浏览文章(很快)我没有看到这个。

希望有所帮助。

编辑:它确实说你可以使用无cookie会话(我认为你可以)。他们使用单独的机制在页面和URL链接中嵌入会话ID。

答案 1 :(得分:1)

为了跟进GrayWizardx的回复,所说的大部分内容都是完全准确的。

如果您使用Cookie的版本的会话,并且禁用了Cookie,那么您就不走运了。但您可以选择使用Session的无Cookie版本,该版本会在显示用户会话ID的URL中添加一个字符串。这看起来非常丑陋,从安全角度来看我一直很关心。

所以你有三个选择(我可以想到我的头脑): 1.需要cookies。这不是一件坏事,特别是如果您的网站是正常需要cookie的网站。 2.使用ViewState 3.在URL中将页面之间的信息传递给页面。从安全角度来看,这再次让我担心。