通过HTTP头添加网站favicon

9

假设我想在动态生成的页面上添加一个网站图标(特别是ADF Faces页面,但这与问题无关)。我不能修改我的结果HTML的标签。 因此,我尝试在servlet头部添加HTTP头。我希望我的标头与HTML 元素完全一样:

<link rel="shortcut icon" href="http://foo.com/favicon.ico">

我是这样添加它的:

httpResponse.addHeader("Link", "<http://foo.com/favicon.ico>; rel=\"shortcut icon\"");

而在我的浏览器中,我看到响应头部如下:

Link: <http://foo.com/favicon.ico>; rel="shortcut icon"

但是,不幸的是,在IE或Chrome中没有任何效果。有人尝试过实现同样的功能吗?我做错了什么吗?这应该能够工作吗?


“Link:”头部是HTTP标准的一部分吗?我找到了这个链接,但它明确表示这只是一个“草案”。 - Salman A
维基百科上有一个链接:RFC 5988 - dragn
哦...提议的标准...我没有注意到:( - dragn
3个回答

4
自2010年10月以来,Yes Link headers已成为RFC 5988中的一个定义标准,但我看到的唯一工作的链接关系只有样式表,并且仅在某些浏览器中。

另请参见:HTTP Header Stylesheets

@dragn所建议的是完全可行的,并且符合规范,为什么浏览器不采用这种方法超出了我的理解。还有一些其他有用的关系,例如预取、书签和词汇表等。他们至少可以通知用户存在链接并将其提供为下拉菜单或菜单。也许需要一个插件来向浏览器厂商展示我们想要它执行的操作,因为它们似乎都很困惑。有什么建议吗?

暂时来说,我们可能必须等到2020年才能使用这个功能,这似乎是趋势。


4
这是2020年!你知道这现在应该能够工作吗? - zone117x
@zone117x 显然部分是在 Google Chrome 中实现的:https://crbug.com/58456 - phk
它在2017年部分上线,但不支持rel="icon",所以对于这个问题没有帮助。提议的标准并未提及"icon",但我不确定我们是否应该期望它有。 - pohart

4

答案是:这种方法依赖于一个还未实施的(感谢Salman A指出)草案标准。 尽管如果它有效,那将是很不错的。


部分在Chrome中实现:https://crbug.com/58456 - phk
它在2017年部分实施,但不支持rel="icon",所以对于这个问题没有帮助。提议的标准并未提及"icon",但我不确定我们是否应该期望它包含此内容。 - pohart

0

Yeah yeah "draft"..

无论如何..

如果您想看看如何在实践中使用它,这里有一个例子(取自icompile.eladkarako.com)

<ifModule mod_headers.c>
  Header set Link <http://icompile.eladkarako.com/favicon.ico>; REL="shortcut icon"; TYPE="image/x-icon"
  Header set Link <http://icompile.eladkarako.com/favicon.ico>; REL="icon"; TYPE="image/x-icon"
  Header set Link <http://icompile.eladkarako.com/img/apple-touch-icon.png>; REL="apple-touch-icon"; TYPE="image/png"; sizes="316x316"
</ifModule>

它将在当前的Chromium / Google Chrome / Google Canary中工作,

(当然,如果您在chrome://flags中设置了advance web-features开关)
)

1
当前Chrome浏览器版本(2016年9月)似乎无法正常工作。 - Kip

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