我目前正在为想要利用cookie来更好地塑造流量等的客户构建一个网络应用程序,你知道这个问题。
所以在上周末我添加了一个简单的cookie写入(基本上设置了cookie =“helloworld”)和一个带有应用程序计数器的cookie读取,这实际上只是一个页面,所以对服务的每个请求都去了通过这个读/写肯定。
部署cookie读取率后的几百万个请求占总请求的约25%,而现在在周末之后它们只会爬升到~33%。
供参考:没有设置路径,域名是固定的,到期时间是创建后的一个月。重复访问次数相对较高。我对设置/获取和计数技术有100%的信心。
更新:进一步的调查显示,浏览器(惊喜,惊喜)不是IE的接受率 90%。将自己标识为IE(无疑包括多个机器人)的请求具有 10%接受率。基于fiddler会话(由firebug确认),响应标头如下所示:
HTTP/1.1 200 OK
Content-Encoding: gzip
Expires: Wed, 09 Jun 1993 00:00:00 GMT
Vary: Accept-Encoding
Set-Cookie: foo; domain=bar.com; expires=Sat, 11-Jul-2009 11:10:19 GMT; path=/; HttpOnly
Cache-Control: no-cache
Cache-Control: private
Cache-Control: no-store
Cache-Control: must-revalidate
Cache-Control: max-stale=0
Cache-Control: post-check=0
Cache-Control: pre-check=0
Date: Thu, 11 Jun 2009 11:10:19 GMT
Transfer-Encoding: chunked
X-AspNet-Version: 2.0.50727
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Content-Type: text/html
Pragma: no-cache
所以我有两个理论:
1)。 IE看到标题中的冲突导致它忽略cookie - 这可能与缓存控制字段有关吗?
2)。 IE需要的东西丢失或格式错误。我找不到这种谷歌搜索的证据。
任何人都可以找到上述标题的错误或有类似的经历吗?
答案 0 :(得分:2)
为了未来的读者的利益,事实证明它只是对一个不期望的实现感到害怕P3P。
DIE IE DIE
答案 1 :(得分:1)
我会在考虑更多原因时更新列表,但这些都是可能的。
您是否将Cookie响应与HTTP请求总数进行比较?您是否意识到您的某些请求可能是图像,CSS或其他可能未发送cookie标头的内容?我想我在某处读过浏览器没有对某些类型的内容使用cookie标头。
答案 2 :(得分:0)
我认为由于声明不准确,浏览器会拒绝cookie。您特别缺少有效性信息(Domain
,Path
和Expires
/ Max-age
)。实际上,缺少Expires
或Max-age
信息会使该Cookie只是一个会话cookie,在关闭浏览器时会过期。