#1 楼
当类似YSlow和Page Speed的内容告诉您设置无cookie的域时,它们的实际含义是从您将不会设置或过去(全局)未设置任何域的域中提供媒体。有时,这可以通过使用子域来实现,例如media.domain.com
或static.domain.com
,但是,如果您在domain.com
上设置了适用于整个域的cookie – *.domain.com
的cookie –则该cookie将由客户端发送回在与domain.com
关联的每个域的每个请求上,将其发送到服务器。这包括所有子域。 如果您决定放弃在域中使用
www.
,则全局cookie将成为一个问题。如果没有用于为其设置Cookie的特定子域,则必须为*.domain.com
设置所有cookie,以使其起作用。此全局cookie问题是为什么您会看到从
ytimg.com
之类的地方投放静态媒体的原因在YouTube上。 ytimg.com
将永远不会提供可设置cookie的动态内容,这意味着当这些域是HTTP请求的一部分时,就不会有cookie从客户端发送回服务器。如果您确定自己永远不会为
*.domain.com
设置cookie,那么您可以根据需要使用子域。请注意,大多数情况下,如果您通过Javascript与其他站点或服务集成,它们将设置全局域cookie。在Apache(并且我确定所有其他网络服务器)中,您可以设置或取消设置响应之前的标头。这不会解决客户端将Cookie发送到您的服务器的问题,但可以防止您的域发送或初始设置Cookie。如果您从无cookie的域中提供的内容不是静态的,那么这将成为问题,这是问题。
Header unset Cookie
Header unset Set-Cookie
这将取消设置现有Cookie和创建新Cookie的标题。同样,如果您从静态域中提供可能设置Cookie的内容,这只是一个问题。将其放在您的站点或虚拟主机的配置中(取决于您的操作系统,服务器和版本,可以是任意数量的位置)。
评论
“如果您提供的内容来自无cookie的域中的内容不是静态的,那将违背它们的目的,那只会是一个问题。” -为什么呢?动态生成的内容本质上并不需要cookie,因此没有任何内容。
–删除
2010年7月31日在4:42
我并不是说从您的静态域提供动态内容会固有地设置任何内容。我说过,如果您提供从静态域设置Cookie的动态内容,则cookie将会是一个问题。静态域的目的是提供不需要交互的内容:图像,css,js等。动态内容(应在其中设置cookie)不应由静态域处理。
–布赖森
2010年7月31日在23:49
#2 楼
我如何指定我不想使用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 评论
来自www.example.net的cookie不会被发送到static.example.net,但是来自example.net的cookie将被发送。解决方案是将example.net重定向到www.example.net。
– TRiG
2010-10-28 14:47
#3 楼
如何指定我不想使用cookie?
您不必指定不想使用cookie ,您只是不使用它们。
评论
并非总是一种选择。无论是否需要,来自其他站点的JavaScript功能集成通常都会为域设置全局cookie。
–布赖森
2010年7月31日在3:59
评论
除非您每小时提供数千个页面,或者每分钟提供数千个页面,否则这种事情真的无关紧要。“尽管尽我们最大的努力来减小cookie的大小,但我们对Google Analytics(分析)的使用使平均用户的cookie大小约为1 KB。”有用且相关-chrishateswriting.com/post/68794699432/small-things-add-up