我如何才能阻止网络上的一个博客设置Cookie?

时间:2019-09-04 作者:Matthew Brown aka Lord Matt

我有一个多站点,每个博客都在一个子域上。我计划创建另一个网站(比如blog92.example.com),我会告诉主站点从中提供图像,这与this question.

这似乎相当简单。然而,我希望只有一个博客(blog92.example.com)永远不会设置cookie。这是因为图像不需要cookie;那么,为什么要在它们身上浪费带宽呢?

我如何防止一个特定的博客设置cookie,而不影响其他博客?

1 个回复
最合适的回答,由SO网友:Ted Stresen-Reuter 整理而成

我阅读另一个问题是为了更好地理解你打算做什么。您需要了解的第一件事是,有很多种发送cookie的方式,在不知道托管环境的任何细节和您可以控制的内容的情况下,无法具体说明您需要做什么。也就是说,你可以从以下几点开始。

Cookie是HTTP规范的一部分。假设您的服务器是Apache,您可能需要禁用some Apache modules 默认情况下发送cookie,或修改其相应的配置文件以告诉他们根本不发送cookie。具体的方法可以在上面的链接中找到(但是,在不知道您所在的平台的情况下,这些信息可能完全错误)。Nginx是另一种流行的HTTP服务器。如果您使用的是nginx,那么您需要了解哪些nginx指令可能正在发送cookie,并确保在nginx配置文件中禁用它们。

PHP能够与HTTP头交互,因此可以插入cookie。通常,当只提供图像时,您不会与PHP交互,因此,虽然这不会影响您,但为了完整性,我将其包括在内。

默认情况下,PHP可能被配置为发送会话cookie。要禁用此功能,需要在PHP中为图像服务的域禁用自动会话。看见https://www.php.net/manual/en/configuration.changes.php 有关如何更改此设置的详细信息(可以在.htaccess或httpd.conf或等效文件中进行设置-如果您使用的是nginx,那么您可能也在使用PHP-FPM,并且运行时配置设置可能可以在相应的PHP-FPM.domain.conf文件中进行设置,但您需要自己查找确切的方法,因为配置可能会有很大的变化)。

如果您从这个域提供JavaScript,您需要确保您的JavaScript中没有包含来自其他域的库。同样,对于CSS,这些其他域可能会在每个请求中发送自己的cookie。

最后,您真的应该使用Cloudflare或其他一些CDN,这些CDN可以更容易地配置为不为静态资源(如图像)发送cookie。此外,CDN将从更靠近最终用户的位置为这些资产提供服务,从而减少加载图像所需的时间。

如果您在多站点上提供来自站点的图像,并且URL直接指向图像(以结尾.jpg WordPress不是等式中的一个因素(因为PHP不会被触发,因此不会发送会话cookie)。如果您查看中的重写规则。htaccess,您会注意到它们的状态是:如果文件存在于服务器上,那么直接为文件提供服务。

换句话说,你是在用WordPress上传图片,而不是为他们服务。服务它们是由Apache完成的(在正常情况下),因此如果发送cookie,您必须在Apache中禁用它们,而不是WordPress和PHP。

相关推荐

Moving Wordpress Multisite

我正在尝试将我的wordpress多站点移动到我的主机。我成功地复制了所有文件,将数据库移动到主机。我还在wp-config 文件对条目执行了相同的操作siteurl 和home 在里面wp_options 表,并编辑wp_site 表来保存正确的域,在wp_blogs.但它仍然表明Error establishing connection to database 消息我测试了与mysqli\\u connect的连接,它能够完美连接。。我快疯了。。。你们中的一些人也在为此挣扎吗?PS:也尝试访问back