SVG 图像在某些 Web 服务器上不显示

问题描述 投票:0回答:3

我在某些服务器上的 html 文件中显示 .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。

svg apache
3个回答
9
投票

SVG 图像应该使用 MIME 类型 image/svg+xml 提供,因此我建议首先检查这一点。检查所提供的 MIME 类型的一种方法是使用 wget 来获取图像。这是 wget 输出的示例。注意它显示 MIME 类型的位置:

jacob@jacob-laptop:~/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 类型都是 image/svg+xml,那么我会比较两个文档的内容,看看它们之间是否存在差异。

此外,虽然这不能回答您的问题,但您还应该注意,并非所有浏览器都支持使用 HTML img 标签来渲染 SVG。其原因是,通常,img 标签使用的安全性低于 object 或 embed 标签。您可以在此处阅读有关此内容的更多信息:可靠地检测对 SVG 的标签支持


2
投票

jbeard4 的答案是正确的,但我想补充一下:为了解决这个问题,你必须让你的服务器以

image/svg+xml
的形式提供 SVG 图像。在 Apache 上,您可以通过将这两行添加到
.htaccess
:

来做到这一点
AddType image/svg+xml svg svgz
AddEncoding gzip svgz

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


1
投票

在此插入 apache 选项

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

<Directory "/LocalServer/cgi-bin">

行之前
© www.soinside.com 2019 - 2024. All rights reserved.