我打开百度,在firebug看网络
http://www.baidu.com/
请求头信息原始头信息
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
这里只有text之类的
而搜索一个 “的” 字,其中有一个图片的请求
http://4.su.bdimg.com/icon/2563.png
请求头信息原始头信息
Accept image/png,image/*;q=0.8,*/*;q=0.5
Accept的值每次都不一样,为什么?
如果我是服务器 想判断客户端的浏览器是非支持png,应该怎么做?只有等到客户请求一个图片才行?客户请求文本时不行?
------解决方案--------------------
每次请求的信息不一样,当然Accept的值不一样了!现如今的游览器都支持,楼主不要杞人忧天嘛,如果你是在想要判断的话(没得必要),那么你就只要等到它发送信息来了,最后一句话,都是支持的
------解决方案--------------------
你要什么,只要我,我就给你,
你要的东西,自己不会处理,我不会管的。
------解决方案--------------------
1 http://www.baidu.com/的时候,只有text之类的?后面不还是有application, 和*/*吗,其中*/*代表任意类型,他都Accept,只不过,权重比较低,最最优先,还是text/html
2 之所以有这个区别,那是因为发起这个请求的来源不一样
你请求http://www.baidu.com/,是在地址框里面打字,或者收藏夹,或者其他方式启动,浏览器判断下列,你的目的极有可能就是想打开一个网页,所以在和服务器内容协商的时候(Accept头),将 text/html,application/xhtml+xml,application/xml(网页类型,后面两个在xhtml或者xml+xslt时候很容易出现)放在了最前面,并给予了很高的权重(0.9)。
而你后面一个请求http://4.su.bdimg.com/icon/2563.png,不是你自动发出的,而是通过你打开的网页时候,网页中的相关代码,比如<img src="http://4.su.bdimg.com/icon/2563.png"/>引起的(或者css background之类),浏览器自然知道,这种代码只想要image系列,其他text, application, audio, video,你给我我也没法正常显示,等于没用,所以内容协商的时候(Accept头),非image系列(*/*)权重非常低(0.5)。其中,你的浏览器根据地址上的扩展名,认为它就应该是个image/png,所以,要求服务器,如果这个地址支持内容协商,也优先返回image/png格式的。