免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: glq2000
打印 上一主题 下一主题

[其他] HTTP协议返回图片时的疑问 [复制链接]

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
21 [报告]
发表于 2013-12-09 10:22 |只看该作者
base64那是不可能的,流量谁玩的起,压缩图片还来不及呢,还base64,更不可能是标准。

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-05-27 06:20:00
22 [报告]
发表于 2013-12-09 10:25 |只看该作者
回复 15# pearma


    多谢pearma解惑,确实 “编码”一词才是准确的。

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-05-27 06:20:00
23 [报告]
发表于 2013-12-09 10:31 |只看该作者
回复 21# linux_c_py_php


    我wireshark抓包看一下

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-05-27 06:20:00
24 [报告]
发表于 2013-12-09 10:36 |只看该作者
回复 18# OwnWaterloo


    就是直接访问http://123.125.87.77/softfile.3g ... p;f=178a&p=.png ,按下F12弹出开发人员工具,然后按ctrl+F5强刷新,观察network就行了。

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-05-27 06:20:00
25 [报告]
发表于 2013-12-09 11:55 |只看该作者
回复 20# xinglp


    3x to xinglp

    恩 我用抓包看了一下,返回的图片的确是二进制格式的。如下两张图:
   
   
   

   

     所以的确是chrome把图片转为了base64了
     我还找了一个把图片转为base64的网站转了下,发现和chrome里展示的是一样的。
     
     但奇怪的是浏览器为什么要这么做呢?

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-05-27 06:20:00
26 [报告]
发表于 2013-12-09 12:04 |只看该作者
回复 15# pearma


    我抓包看了下,服务器回传的是二进制的图。
    截图见 25楼。

    不过很奇怪chrome为啥要自己转为base64来给用户看,可能是chrome有用吧。。。

    thanks a lot.

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-05-27 06:20:00
27 [报告]
发表于 2013-12-09 12:14 |只看该作者
linux_c_py_php 发表于 2013-12-09 10:22
base64那是不可能的,流量谁玩的起,压缩图片还来不及呢,还base64,更不可能是标准。


恩。。。 说的是

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
28 [报告]
发表于 2013-12-09 21:13 |只看该作者
回复 24# glq2000

之前机器上的Chrome版本比较低。

  1. $ chromium-browser --version
  2. Chromium 25.0.1364.160 Ubuntu 12.04
复制代码
换了一个版本较高的Chrome就出现你说的情况了。

  1. $ chromium-browser --version
  2. Chromium 30.0.1599.114 Ubuntu 12.04
复制代码
Chrome没有发送一些奇怪的header使得 http://123.125.87.77/softfile.3g.qq.com/msoft/sec/dp/2.png 产生的响应会用base64对body进行编码。
高版本的Chrome只是在console里显示body按base64编码后的结果。 不知道意义何在。。。 反正人都读不懂。。。 还不如像原来那样显示缩略图。。。

响应的header表明类型是image/png,长度是11561。 Chrome里看到的也是这两个值:

  1. $ curl -sI http://123.125.87.77/softfile.3g.qq.com/msoft/sec/dp/2.png | sed -n '/^Content/p'
  2. Content-Type: image/png
  3. Content-Length: 11561
复制代码
实际body长度是吻合的:

  1. $ curl -s http://123.125.87.77/softfile.3g.qq.com/msoft/sec/dp/2.png | wc -c
  2. 11561
复制代码
而如果按base64编码长度会是15416才对:

  1. $ curl -s http://123.125.87.77/softfile.3g.qq.com/msoft/sec/dp/2.png | base64 -w0 | wc -c
  2. 15416
复制代码
base64编码后的前几个字符同Chrome里看到的是一样的:

  1. $ curl -s http://123.125.87.77/softfile.3g.qq.com/msoft/sec/dp/2.png | base64 -w0 2>/dev/null | head -c12
  2. iVBORw0KGgoA
复制代码

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
29 [报告]
发表于 2013-12-09 21:31 |只看该作者
base64和http还是有一些关系的:
data URI scheme的维基页面里有一个例子:

  1. <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
  2. AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
  3. 9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />
复制代码
试试CU能不能把这段嵌到img的src里:
如果成功的话这会显示一个红点。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
30 [报告]
发表于 2013-12-09 21:38 |只看该作者
看来不行。。。 CU会添加http协议。。。
更多在线例子在这里: datatests
里面有一个png白色小方块。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP