【问题标题】:Requested: https://www.w3.org/2000/svg Found: http://www.w3.org/2000/svg [duplicate]请求:https://www.w3.org/2000/svg 发现:http://www.w3.org/2000/svg [重复]
【发布时间】:2017-01-27 03:13:30
【问题描述】:

我们正在使用 Apache Batik 来渲染 SVG 文件。出于安全原因,所有 URL 都转换为 HTTP。

现在,当我们渲染 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 参数,不好。我正在为此挖掘源代码。

【问题讨论】:

  • “安全原因,所有 url 都转换为 http”你在开玩笑吧?您只能“转换”您自己控制的 url,如果他们不支持 https,则无法转换其他人的 url。在这种情况下,命名空间 url 只是标识符,不用于检索数据(尽管为了方便起见,与命名空间相关的东西通常托管在 url 上,但不是因为它是必需的)
  • xmlns 属性中的字符串不是真正的 URL。它们实际上只是允许解析器识别 XML 元素的名称空间的预定义常量。你不应该改变它们。
  • (我假设您在第一句话中的意思是“to HTTPS”而不是“to HTTP”?)

标签: java svg xml-namespaces batik


【解决方案1】:

不要更改命名空间定义的 URL。这些属性以xmlns 开头,后跟: 和更详细的名称。

对于 SVG,命名空间必须是 http://www.w3.org/2000/svg,参见 the specification

这些 URL 不用于连接,它们只是定义元素的含义(请参阅 XML Namespaces),因此您不会通过更改它们来获得任何安全性。相反,您只是使您的 SVG 文件无效。

【讨论】:

    猜你喜欢
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 2012-02-12
    • 1970-01-01
    相关资源
    最近更新 更多