如果我禁用javascript和Cookie,Amazon.com会检测到没有重定向就会禁用Cookie。如果您点击购物车链接,购物车页面上只有一个获取。
我猜测amazon.com很可能不使用ASP.NET,但是如何在不使用javascript和重定向的情况下使用ASP.NET检测禁用的cookie?是否有可能检测到一次往返是否禁用了cookie?
答案 0 :(得分:2)
我相信你所描述的是不可能的。亚马逊似乎没有这样做。作为证据:
您将收到消息“请在您的网络浏览器中启用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中读取它?
不确定这是否可能,但这是我能想到的唯一方法。