2016-09-19 47 views
4

我們使用Apache Batik渲染SVG文件。出於安全原因,所有網址都轉換爲HTTP。請求:https://www.w3.org/2000/svg發現:http://www.w3.org/2000/svg

現在,當我們渲染SVG文件時,我們遇到了這個問題。

  • 原始SVG是:

    svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" 
    
  • 轉換SVG是:

    svg xmlns=\"https://www.w3.org/2000/svg\" xmlns:xlink=\"https://www.w3.org/1999/xlink\" 
    

所以,我試圖從Java,沒有好Dhttps.protocols參數。我正在爲此挖掘源代碼。

+2

「安全原因所有的網址都轉換爲http」你是在開玩笑吧?您只能「轉換」自己控制的網址,如果不支持https,則無法轉換其他人的網址。在這種情況下,名稱空間URL只是標識符,並不用於檢索數據(雖然通常與URL有關的命名空間通常是爲了方便而託管的,但並非因爲它是必需的) –

+3

xmlns屬性中的字符串是**不真實網址**的。它們實際上只是預定義的常量,允許解析器識別XML元素的名稱空間。你不應該改變它們。 –

+0

(我假設你的意思是「HTTPS」而不是「HTTP」的第一句話)? – unor

回答

9

不要更改名稱空間定義的URL。這些是以xmlns開頭的屬性,可以選擇後跟:和更詳細的名稱。

對於SVG,名稱空間必須爲http://www.w3.org/2000/svg,請參閱the specification

這些URL不用於連接,它們只是定義了元素的含義(請參閱XML Namespaces),因此您沒有通過更改它們來獲得任何安全性。相反,你只是讓你的SVG文件無效。