如何确定cookie被禁用*没有* javascript和*没有*重定向?

时间:2010-08-04 21:39:14

标签: asp.net http cookies iis-7.5

如果我禁用javascript和Cookie,Amazon.com会检测到没有重定向就会禁用Cookie。如果您点击购物车链接,购物车页面上只有一个获取。

我猜测amazon.com很可能不使用ASP.NET,但是如何在不使用javascript和重定向的情况下使用ASP.NET检测禁用的cookie?是否有可能检测到一次往返是否禁用了cookie?

4 个答案:

答案 0 :(得分:2)

我相信你所描述的是不可能的。亚马逊似乎没有这样做。作为证据:

  1. 禁用JavaScript
  2. 清除您的Cookie(但启用它们)
  3. 转到此处:http://www.amazon.com/gp/cart/view.html/ref=gno_cart
  4. 您将收到消息“请在您的网络浏览器中启用Cookie以继续”。但是如果你重新加载页面,那么消息就会消失,因为cookie是在第一次观看时设置的。

    这不起作用的原因是当页面响应设置cookie时,服务器无法确定它们是否已在下一个请求之前正确设置。当然,你可以使用JavaScript解决这个问题,但如果没有这个,服务器就无法提前知道请求是否来自接受cookie的浏览器。

答案 1 :(得分:2)

您无需重定向即可获取Cookie。您所需要的只是延迟加载内容。

基本上,我相信以下内容可行:

'GET /index.html'响应设置Cookie(它们位于标题中,并在收到并呈现 index.html之前存储)。

如果你没有遇到缓存问题并动态响应图像,你可以在服务时说“GET /TinyImage.gif”检查cookie。

那么,最后一个问题是,您如何通过TinyImage请求告知用户您的发现?绝对不容易,但如果您使用IFrame而不是简单标记,您实际上可以为单个页面渲染提供两个GET请求。

或者,你可能真的非常疯狂,并且实际上会停止第一次GET,直到第二次GET确认浏览器设置。这适用于一些HTTP向导,但是如果你可以把头包裹在Comet(不是AJAX,Comet!)中,它可以派上用场。

这绝对是可能的,只是很棘手。我会尝试在ASP.NET中这样做吗?无法承诺任何事情,但分享将是一件好事。

答案 2 :(得分:0)

我想它可能会在javascript / cookies off配置中加载页面,然后使用javascript进行检查,并根据需要设置功能以启用Cookie。

答案 3 :(得分:0)

你可以在Page_Init中设置一个Cookie,然后看看你是否可以在Page_PreRender中读取它?

不确定这是否可能,但这是我能想到的唯一方法。