每个Web请求都发送浏览器cookie吗?
每个Web请求都发送浏览器cookie吗?
我不是说网页浏览,而是一个图像,.js文件等的请求。
更新如果一个网页有50个元素,那就是50个请求。 为什么它会为每个请求发送相同的cookie,是不是caching还是知道它已经有了?
是的,只要所请求的URL位于Cookie中定义的同一个域和path内(以及所有其他限制 – 安全,安全,不过期等),那么将为每个请求发送Cookie。
正如其他人所说的,如果cookie的主机,path等限制被满足,它将被发送50次。
但是你也问为什么:因为cookies是一个HTTPfunction,HTTP是无状态的。 HTTP被devise成在服务器之间不存储请求之间的任何状态。
实际上,服务器没有一种可靠的方式来识别哪个用户正在发送给定的请求; 在一个Web代理之后可能有一千个用户(因此也是IP地址)。 如果cookie没有被发送每个请求,服务器将无法知道哪个用户请求任何资源。
最后,浏览器不知道服务器是否需要cookie,它只知道服务器指示它发送cookie到foo.com的任何请求,所以它是这样做的。 有时图像需要它们(例如,dynamic生成的每个用户),有时不需要,但浏览器无法辨别。
是。 每个请求都会发送属于同一个域的cookie。
像:你有4个cookies在www.stackoverflow.com。 如果您向www.stackoverflow.comhttp://img.dovov.comlogo.png发出请求,它也会发送cookie。
但是,如果您请求stackoverflow.comhttp://img.dovov.comlogo.png或images.stackoverflow.com/logo.png,如果没有cookie,那么不会发送cookie。
您可以阅读更多关于cookie和图片请求,例如,在这个StackOverflow博客文章 。
3年过去了
还有一个原因,浏览器不会发送cookie。 有些代码可能会使用对象的crossOrigin属性来匿名,以防止发送cookie。
不是,每个请求都不会发送Cookie。 这取决于cookieconfiguration和客户端 – 服务器连接。
例如,如果您的Cookie的secure
选项设置为true
则必须通过安全的HTTPS连接进行传输。 意思是当你用HTTP协议看到那个网站时,这些cookies不会被浏览器发送,因为这个安全标志是真实的。
我知道这是一个古老的线索。 但是我刚刚注意到,如果添加尾随点,大多数浏览器都不会为域发送Cookie。 例如http://example.com.
将不会收到为.example.com
设置的Cookie。 另一方面,Apache将它们视为同一主机。 我发现这对于使我包含的外部资源的跨域跟踪更加困难是有用的,但是出于性能方面的原因也可以使用它。 请注意,这会对https
证书进行validation。 我已经使用浏览器和我自己的设备进行了一些testing。 除了safari(手机和桌面)之外,几乎所有的浏览器都可以使用该技术,其中包括请求中的Cookie。
Cookie有一个“path”属性。 如果“path= /”,答案是肯定的。