2016-09-19 2 views
4

Мы используем Apache Batik для рендеринга SVG-файлов. По соображениям безопасности все URL-адреса преобразуются в 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\" 
    

Итак, я попытался с Dhttps.protocols параметра из Java, ни к чему хорошему. Я копаю исходный код для этого.

+2

«Способы обеспечения безопасности все URL-адреса преобразуются в http« вы шутите правильно? Вы можете только «конвертировать» URL-адреса, которыми вы управляете сами, вы не можете конвертировать чужие URL-адреса, если они не поддерживают https. И в этом случае URL-адреса пространства имен - это всего лишь идентификаторы, которые не используются для извлечения данных (хотя часто для их размещения в URL-адресе размещается URL-адрес, но не потому, что это необходимо) –

+3

Строки внутри атрибутов xmlns ** не являются реальными URL-адрес **. Это действительно предопределенные константы, которые позволяют синтаксическим анализаторам идентифицировать пространство имен элементов XML. Вы не должны их менять. –

+0

(предположим, что вы имели в виду «в HTTPS» вместо «по HTTP» в первом предложении?) – unor

ответ

9

Не изменяйте URL-адреса для определения пространства имен. Это атрибуты, начинающиеся с xmlns, необязательно сопровождаемые : и более подробное имя.

Для SVG пространство имен должно быть http://www.w3.org/2000/svg, см. the specification.

Эти URL-адреса не используются для подключения, они просто определяют, что означают элементы (см. XML Namespaces), поэтому вы не получаете никакой безопасности, изменяя их. Вместо этого вы просто делаете свой файл SVG недействительным.

Смежные вопросы