如何设置无cookie域?


24

我读过,最好从无cookie的域或子域中提供静态内容(css,javascript等),以获得更好的性能。我假设默认情况下域不是非cookie的。如何指定我不想使用Cookie?


3
除非您每小时提供数千个页面或每分钟提供数千个页面,否则这种事情实际上并不重要。

“尽管尽我们最大的努力来减小cookie的大小,但我们对Google Analytics(分析)的使用使平均用户的cookie大小约为1 KB。” 有用和相关的-chrishateswriting.com/post/68794699432/small-things-add-up
mvark 2013年

Answers:


26

当类似YSlowPage Speed的内容告诉您设置无cookie的域时,它们的实际含义是从您将不会设置任何域或过去(全局)未设置任何域的​​域中提供媒体。有时,这可以通过使用子域名,如来实现media.domain.com,或者static.domain.com,但是如果你设置一个cookie domain.com适用于域作为一个整体-一个cookie的*.domain.com-那么这个cookie将被客户端回服务器上发送与相关的每个域的每个请求domain.com。这包括所有子域。

如果您决定放弃在www.域中使用,则全局cookie将成为一个问题。如果没有用于为其设置Cookie的特定子域,则必须设置所有Cookie *.domain.com才能使它们起作用。

这个全球性的Cookie问题就是为什么您会看到从ytimg.comYouTube之类的地方投放的静态媒体的原因。ytimg.com将永远不会提供可设置cookie的动态内容,这意味着当这些域是HTTP请求的一部分时,不会将任何cookie从客户端发送回服务器。

如果您确定永远不会设置Cookie,*.domain.com则可以根据需要使用子域。请注意,大多数时候,如果您通过Javascript与其他站点或服务集成,它们将设置全局域cookie。

在Apache(而且我确信所有其他Web服务器)中,可以在响应请求之前设置或取消设置标头。这不会解决客户端将Cookie发送到您的服务器的问题,但可以防止您的域发送或初始设置Cookie。如果您提供的内容来自无cookie的域中的内容不是静态的,那么这是一个问题,这违背了它们的目的。

Header unset Cookie
Header unset Set-Cookie 

这将取消设置现有Cookie和创建新Cookie的标题。同样,如果您从静态域中投放可能设置Cookie的内容,这只是一个问题。将其放置在站点或虚拟主机的配置中(取决于您的操作系统,服务器和版本,可以是任意数量的位置)。


“如果您提供的内容来自无cookie的域中的内容不是静态的,那将违反它们的目的,这只是一个问题。” -为什么呢?动态生成的内容本质上并不需要cookie,因此没有任何内容。

1
我并不是说从静态域提供动态内容会固有地设置任何内容。我说过,如果您提供的动态内容设置了来自静态域的cookie,那么cookie将是一个问题。静态域的目的是提供不需要交互的内容:图像,css,js等。动态内容(应在其中设置Cookie)不应由静态域处理。
布赖森

6

如何指定我不想使用Cookie?

这不是你需要做的,有一个cookie的域是什么-它更多的是,你需要什么不能做......有你必须确保在该域上运行的应用程序中的cookie的域不设置任何cookie。这通常意味着没有登录名,没有Google Analytics(分析),没有会话-即仅提供媒体服务而没有其他服务。显然,这取决于您的设置。

我最近犯的一个错误是,我没有在域和子域之间进行区分。我从服务所有媒体开始,就http://media.example.com以为它是一个无cookie的域,但实际上它是一个域,我从主站点http://www.example.com那里发现了很多cookie,这些主站点都设置在域级别,因此污染了我应该是无cookie的子域。这是我如何解决此问题的链接:https : //serverfault.com/questions/160210/nginx-serve-static-content-from-a-cookieless-domain


2
的Cookie www.example.net 不会发送到static.example.net,而的Cookie example.net将会发送到。解决的办法是重定向example.netwww.example.net
TRiG

3

如何指定我不想使用Cookie?

您不必指定不想使用cookie,而只是不使用它们。


3
并非总是一种选择。无论是否需要,来自其他站点的JavaScript功能集成通常都会为域设置全局cookie。
布赖森
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.