2011-07-25 61 views
7

我在某些服务器上的html文件中显示.svg图像时出现问题。这让我感到困惑,因为我认为它是由浏览器决定是否呈现svg图像,但浏览器保持不变。我使用下面的字符串来显示他们:某些网络服务器上不显示SVG图像

<img src='path/to/image.svg' alt='image' /> 

在一个RHEL6服务器,它显示,另一个RHEL5服务器上,它不会。 httpd的版本分别是2.2.15-9.el6和2.2.3-53.el5。网页浏览器与Google Chrome 12.0.742.122保持一致。服务器之间有什么东西会决定svg图像是否被渲染?

错误日志不报什么,访问日志给.SVG文件的200状态和304

回答

9

SVG图像应得到服务与MIME类型的图像/ SVG + XML的,所以我会建议首先检查。检查提供的MIME类型的一种方法是使用wget获取图像。以下是wget的输出示例。注意在此它显示MIME类型:

[email protected]:~/tmp$ wget http://croczilla.com/bits_and_pieces/svg/samples/butterfly/butterfly.svg 
--2011-07-25 11:32:04-- http://croczilla.com/bits_and_pieces/svg/samples/butterfly/butterfly.svg 
Resolving croczilla.com... 77.92.68.237 
Connecting to croczilla.com|77.92.68.237|:80... connected. 
HTTP request sent, awaiting response... 200 OK 
Length: 31187 (30K) [image/svg+xml] 
Saving to: `butterfly.svg' 

100%[====================================================================>] 31,187  84.5K/s in 0.4s  

如果MIME类型是图像/ SVG + XML在这两种情况下,那么我会diff的两个文件的内容,看是否有他们之间的差异。

此外,虽然这不能回答你的问题,但你应该知道并非所有的浏览器都支持使用HTML img标记来呈现SVG。原因是,通常情况下,img标签的安全性低于对象或嵌入标签。你可以在这里阅读更多关于这方面的信息:Reliably detecting <img> tag support for SVG

+2

另外'卷曲-I http:// foo.com/bar.svg'只会获取并显示标题。 – Phrogz

+0

感谢您的指点! – Scott

2

jbeard4答案是对的,但我想补充它:为了解决,你必须让你的服务器提供的SVG图像为image/svg+xml。在Apache上,你可以通过添加以下两行.htaccess

AddType image/svg+xml svg svgz 
AddEncoding gzip svgz 

通过http://kaioa.com/node/45

0

插入阿帕奇选择这个

`<filesMatch "\.(svg|svgz)$"> 
    FileETag None 
    <ifModule mod_headers.c> 
     Header set Content-type "image/svg+xml" 
    </ifModule> 
</filesMatch>` 

前行<Directory "/LocalServer/cgi-bin">