2011-07-25 56 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">