【问题标题】:It is possible to return a GET /favicon.ico request with a string ecoded image?可以返回带有字符串编码图像的 GET /favicon.ico 请求吗?
【发布时间】:2022-01-15 18:54:11
【问题描述】:

我在我的 iot 设备上设置了网络服务器。该设备不是很强大,也没有用于存储图像的文件系统。

尽管如此,我仍然希望为请求它的浏览器提供一个网站图标。由于我没有文件系统,我计划将图像直接保存到设备的源代码中。我在this thread 中读到,您可以将图像转换为编码字符串,然后我可以将编码字符串保存到变量中,例如

String imageString = "Encoded String Here";

所以这是 google chrome favicon http 请求的样子

20:46:21.767 -> GET /favicon.ico HTTP/1.1
20:46:21.767 -> Host: 192.168.1.8
20:46:21.767 -> Connection: keep-alive
20:46:21.767 -> User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36
20:46:21.814 -> Accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8
20:46:21.814 -> Referer: http://192.168.1.8/
20:46:21.814 -> Accept-Encoding: gzip, deflate
20:46:21.814 -> Accept-Language: en-US,en;q=0.9,fil;q=0.8

我的网络服务器只能以纯文本响应请求。那么我的响应看起来如何,图像现在是文本格式??

HTTP/1.1 200 OK
Connection: close
Content-Type: text/html

//Do i place the encoded string here?? will the browser understand that?

【问题讨论】:

    标签: html http favicon


    【解决方案1】:

    您可以生成您的网站图标的 base64 字符串,然后将其插入到 html 文档的头部,如下所示:

    <link href="data:image/x-icon;base64,<your_base64_here>" rel="icon" type="image/x-icon" />
    

    【讨论】:

    • 所以我将不得不忽略 favicon 请求?这会不会是低效的,因为每次我必须向浏览器发送 html 时我必须包含图像?或者我只能发送一次(就像只发送主页一样)浏览器会保存它?
    • 其实base64文本就是图片——浏览器不会发出favicon请求
    • 您是对的,当您的代码包含在主 html 中时,浏览器确实没有发出对 favicon 的请求。所以我现在唯一关心的是我试图减轻 CPU 的负担(服务器是一个可怜的 150Mhz CPU),如果我在主 html 中包含代码,我将获得额外的 100 毫秒的交易时间。如果我不包含它并响应 favicon,浏览器会缓存图像对 >?
    • 是的,但是您需要将其存储在文件系统中,所以请注意您的考虑
    • 无法使用编码字符串回复网站图标?
    猜你喜欢
    • 2015-02-05
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多