【问题标题】:Chrome favicon.ico GET requestChrome favicon.ico GET 请求
【发布时间】:2015-02-05 07:23:46
【问题描述】:

给定以下脚本:

<?php
syslog(LOG_INFO,'$_GET: '.print_r($_GET,1));
var_dump($_GET);
?>

使用 http://www.example.com/testing/chrome.php?x=123 作为 URI 会产生预期的结果:

array(1) { ["x"]=> string(3) "123" } 

但是在查看系统日志和 Apache 访问日志时,我有另一个名为“cid”的 GET 变量,当使用 Chrome 浏览器版本 39.0.2171.71 m(但不是 FF 或 IE)时,其值为“favicon.ico”。

这是什么原因造成的,有没有办法防止我的服务器因每个请求而被命中两次?

系统日志

Dec  7 07:33:09 devserver test: $_GET: Array#012(#012    [x] => 123#012)
Dec  7 07:33:09 devserver test: $_GET: Array#012(#012    [cid] => favicon.ico#012)

Apache 日志

192.168.1.1 - Michael [07/Dec/2014:07:33:09 -0800] "GET /testing/chrome.php?x=123 HTTP/1.1" 200 36 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"
192.168.1.1 - Michael [07/Dec/2014:07:33:09 -0800] "GET /favicon.ico HTTP/1.1" 200 46 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"

【问题讨论】:

    标签: php apache google-chrome http browser


    【解决方案1】:

    是什么原因造成的,有没有办法防止我的服务器因每个请求而被命中两次?

    Chrome 和其他浏览器会在 /favicon.ico 中查找您网站的图标。放一个空文件而不是让你的脚本处理那个 URL,你应该已经准备好了。

    【讨论】:

    • 为了复合奇怪的行为,我有一个重定向规则,当访问 example.com/xxx 和 /xxx 不是文件或目录时,它会生成 index.php?cid=xxx 的漂亮 URL。添加一个空文件解决了这个问题。谢谢
    【解决方案2】:

    避免这种情况的最佳方法是添加一个空的网站图标

    &lt;link rel="shortcut icon" href="#" /&gt;

    【讨论】:

    • 一些浏览器在无法从&lt;link&gt;标签IIRC获取到/favicon.ico时会回退到/favicon.ico。
    猜你喜欢
    • 2010-11-22
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2016-05-26
    • 2015-04-28
    • 2011-12-11
    相关资源
    最近更新 更多