设置无cookie子域名

3
以前我为我的网站(http://example.com)提供图片,这些图片存放在以下两个文件夹中:http://example.com/imageshttp://example.com/pics
现在,我创建了一个子域名img.examole.com,并将这些文件夹移动到http://img.example.com/picshttp://img.example.com/images位置。我还通过编辑.htaccess文件阻止了对http://example.com/img文件夹的访问,以便无法将子域名作为主站点的目录访问。 它只能作为http://img.example.com访问。
如何使此http://img.example.com子域成为无cookie的子域?或者我可以将此http://img.example.com子域添加到cloudflare中吗?我不想将主域http://example.com添加到cloudflare中。当我尝试从我的CPanel将http://example.com添加到cloudflare时,它显示:
类型记录不能直接通过CloudFlare网络路由。 相反,请点击这里,将img.example.com的类型更改为CNAME。
我已经在所有文章中将图像位置更改为http://img.example.com/pics。如何解决这个问题?请帮帮我...

你具体想修复什么?你的“问题”上有很多未解决的问题。是关于如何为你的网站使用Cloudflare?还是关于如何为你的img子域创建.htaccess文件? - reikyoushin
3个回答

4
成为无cookie和由CDN提供服务是域名的不相关属性。
要使您的网站上某些域名成为无cookie,您只需不在该域名上设置可见的cookie,并确保您在网站上使用的任何其他第三方代码也不这样做。
通常很难避免防止example.com的cookie不会在子域名上(通常是从2个位置www.example.com和example.com提供的站点)可见。如果您可以接受仅在example.com上使用cookie,则请确保所有设置cookie标头都指定精确的域名("example.com"而不是".example.com"),以便cookie不会在任何子域名上可见。另一种选择是将主站点移动到子域中并在那里设置cookie(即www.example.com),则cookie不会“泄漏”到同级子域(即“img.example.com”)中。
最好在完全不同的域名上托管静态内容-更容易控制cookie,并且可能具有更多的CDN可能性(即在某些情况下,来自CDN的HTTPS流量可能需要针对自定义和CDN提供的域执行不同的操作)。

嗨,我的wp-config.php文件中没有“COOKIE_DOMAIN”条目。 - Anik Chakraborty
@AnikChakraborty,我没有意识到你有一些关于PHP的问题...不幸的是,我不知道如何在PHP中配置cookie。 - Alexei Levenkov

2
浏览器会区分example.com和www.example.com。如果您在example.com上设置了cookie,则它将在对www.example.com和cookie-free.example.com的请求中寻找它们,这就是为什么您无法获得无cookie子域的原因(因为顶级有cookie)。 最佳实践是将www.example.com用作您的站点,并在那里设置cookie,然后如果您使用cookie-free.example.com(另一个子域,如www),它将不具有按照从上到下的浏览器查找的cookie。 有关更多信息,请参见http://developer.yahoo.com/performance/rules.html#cookie_free

0

正如其他人所说,这里有两个不同但相关的问题:

  1. 配置服务器/应用程序以从无cookie子域提供资产
  2. 利用CloudFlare传递静态资源。

对于问题#1,您需要确保不将cookie分配给整个域(这就是为什么建议使用www的原因)。关于如何做到这一点,这里有很好的信息:Serving Static Content from a Cookieless Domain4 Steps To Serve Static Content From Cookieless Subdomain - 这两篇文章都涉及到您的WordPress问题,涉及“COOKIKE_DOMAIN”设置。

基本上,您需要确保Google Analytics和WordPress等应用程序不会在域级别设置cookie,而是将其限制在www子域中。

对于问题#2,CloudFlare本身声明他们会为每个静态请求分配cookie:

CloudFlare将向任何由我们的服务代理的域名或子域名添加安全cookie。此外,由于CloudFlare默认已经缓存了您的静态内容,因此实际上没有必要拥有一个无cookie的域名。

KB - 我可以通过CloudFlare提供无cookie的域名或子域名吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接