每个Web请求都发送了浏览器cookie吗?
我不是在谈论页面视图,而是对图像,.js文件等的请求.
更新 如果网页有50个元素,那就是50个请求.为什么它会为每个请求发送SAME cookie,它是否缓存或知道它已经拥有它?
Ian*_*and 177
是的,只要请求的URL位于cookie中定义的相同域和路径(以及所有其他限制 - 安全,httponly,未过期等),则会为每个请求发送cookie.
der*_*ert 88
正如其他人所说,如果符合cookie的主机,路径等限制,它将被发送50次.
但你也问过为什么:因为cookie是一个HTTP功能,而HTTP是无状态的.HTTP旨在在没有服务器在请求之间存储任何状态的情况下工作.
事实上,服务器没有一种可靠的方法来识别哪个用户正在发送给定的请求; 单个Web代理后面可能有一千个用户(因此IP地址).如果每次请求都没有发送cookie,服务器将无法知道哪个用户正在请求任何资源.
最后,浏览器不知道服务器是否需要cookie,它只知道服务器指示它将任何请求的cookie发送到foo.com,所以它会这样做.有时图像需要它们(例如,每个用户动态生成),有时不需要,但浏览器无法分辨.
igo*_*s07 18
是.每个请求都会发送属于同一域的cookie.它们没有被缓存,因为HTTP是无状态的,这意味着每个请求必须足以让服务器弄清楚如何处理它.假设您拥有只能由特定用户访问的图像; 你必须向这50个请求中的每一个发送你的auth cookie,这样服务器就知道它是你而不是别人,或者是客户,它正在获得的请求池中.
话虽如此,鉴于其他响应中提到的其他限制,例如HTTPS设置,路径或域,可能不会发送cookie.特别需要注意的是:域之间不共享cookie.这有助于减少静态文件的HTTP调用大小,例如您提到的图像和脚本.
示例:您有4个cookie www.stackoverflow.com
; 如果您提出请求www.stackoverflow.com/images/logo.png
,将发送所有这4个cookie.
但是,如果您请求stackoverflow.com/images/logo.png
(注意子域名更改)或者images.stackoverflow.com/logo.png
那些4个cookie将不存在 - 但可能与这些域名相关的那些.
您可以在此StackOverflow博客文章中阅读有关cookie和图像请求的更多信息.
不。不是每个请求都发送cookie。这取决于cookie配置和客户端-服务器连接。
例如,如果您的cookie secure
选项设置为,true
则必须通过安全的HTTPS连接传输它。意味着当您看到具有HTTP协议的网站时,由于安全标记为true,浏览器将不会发送这些cookie。
3年过去了
浏览器不发送cookie的另一个原因.某些代码可能会使用object的crossOrigin属性来匿名,以防止发送cookie.
归档时间: |
|
查看次数: |
69234 次 |
最近记录: |