我在我的服务器上安装了Nginx以及PHP-FPM,在制作新网站并尝试确保尽可能快地使用Google Chrome的审核工具时.在一些错误中,它给了我这个.
Leverage proxy caching (10) The following publicly cacheable resources contain a Set-Cookie header. This security vulnerability can cause cookies to be shared by multiple users.
所以我想知道的是,为了不为此域设置Set-Cookie标头,我必须添加到以下语句中.然后,我将获取该信息并将其应用于css,img,ect子域,以便浏览器可以正确缓存它.
server { gzip on; gzip_static on; listen 80; server_name img.domain.tld; root /www/domain/tld; index index.PHP index.htm index.html; location ~* \.(gif|png|jpg|jpeg|svg)${ expires 30d; } include PHP_fpm; }
location ~ \.PHP${ fastcgi_pass unix:/tmp/PHP.socket; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
有趣的是,我还有一个css文件被报告为具有set-cookie标头,并且由css子域服务,其中没有包含PHP-fpm …这里是该部分的配置文件.
server { gzip_static on; listen 80; server_name css.domain.tld; root /www/domain/css; index index.htm index.html; location ~* \.(css)${ expires 7d; } }
文件是……
Leverage proxy caching (5) The following publicly cacheable resources contain a Set-Cookie header. This security vulnerability can cause cookies to be shared by multiple users.
> style.css(由css.domain.tld提供)
> 2009EMSWeeklogoSmall.jpg(由domain.tld提供)
> EMS FOUR.jpg(由domain.tld提供)
> get_adobe_reader.png(由img.domain.tld提供)
> dhs-ntas-badge-small.jpg(由dhs.gov提供)
domain.tld服务器配置如下所示.
server { gzip on; gzip_static on; listen 80; server_name .domain.tld; root /www/domain/www; index index.PHP index.htm index.html; location ~* \.(htm|html|ico|icns|hqx|gif|png|svg|jpg|jpeg|svg)${ expires 1d; } include PHP_fpm; }
解决方法
缓存指令(在本例中为public)可以通过两种方式设置.
>你的Nginx告诉它缓存.
> PHP告诉它缓存,然后由Nginx转发.
根据你的上面的Nginx配置,并忽略整个include PHP_fpm;,除非你的图像(gif,jpg,png)以某种方式被执行,否则没有什么会建议#1.
PHP也有可能有这样的缓存指令.在这种情况下,这是你应该从核心修复而不是尝试修补工作的东西.
但是在这两种情况下,您还可以输入一个奇怪的场景.如果找不到您的图像,它将尝试查找404页面.如果404是直接或间接的可执行文件(PHP),那么它可以携带一个set cookie命令.如果404指令也告诉它被缓存,这将是一个不好的行为.所以,一定要检查一下.同样也明显适用于任何其他错误代码.
鉴于目前的信息,这是我所能猜到的.如果发现任何错误以及Nginx和/或PHP-fpm的完整配置,您可能需要跟进有关哪个确切项目导致Chrome提供此类消息的其他信息.
我试着查看完整的HTTP标头,看看是否有任何cookie的迹象或传递的任何自定义信息.
来自OP网站的示例响应标头导致警告.
telnet img.nassauems.net 80 Trying 205.186.162.66... Connected to img.nassauems.net. Escape character is '^]'. GET http://img.nassauems.net/buttons/get_adobe_reader.png HTTP/1.1 Host: img.nassauems.net HTTP/1.1 200 OK Server: Nginx/1.2.4 Date: Sat,12 Jan 2013 20:24:19 GMT Content-Type: image/png Content-Length: 2597 Last-Modified: Fri,28 Dec 2012 08:30:57 GMT Connection: keep-alive Expires: Mon,11 Feb 2013 20:24:19 GMT Cache-Control: max-age=2592000 Accept-Ranges: bytes
来自我的网站的示例响应标头,不会引起警告.
telnet www.mysite.com 80 Trying 123.123.123.123... Connected to www.mysite.com. Escape character is '^]'. GET http://www.mysite.com/test.png HTTP/1.1 Host: www.mysite.com HTTP/1.1 200 OK Server: Nginx/1.0.12 Date: Sat,12 Jan 2013 20:21:43 GMT Content-Type: image/png Content-Length: 207 Last-Modified: Sat,27 Aug 2011 04:42:30 GMT Connection: keep-alive Expires: Sun,13 Jan 2013 20:21:43 GMT Cache-Control: max-age=86400 Accept-Ranges: bytes
您看得出来差别吗?我不能!