SVG不工作时,在本地主机访问。 为什么?(SVG not working when acces

2019-08-18 17:41发布

有谁知道为什么从这个页面相同的代码http://emacsformacosx.com/不会在本地Tomcat服务器上托管时呈现?

我试图用一些SVG玩,但不能看到,使其在本地工作。 有任何想法吗?

Answer 1:

该网页是XHTML,所以应该用合适的Content-Type头提供服务。 如果页面被当作text / html的,那么Firefox和Chrome(只有两个我已经签入)将无法识别所必需的XML命名空间的SVG工作。

虽然直播页面被送达头

Content-Type: text/xml; charset=UTF-8

这不,严格来说,是正确的。 在我的测试中,用它提供服务

Content-Type: application/xhtml+xml; charset=UTF-8

使其正确呈现,并且是用于XHTML的适当的类型。

请注意,您必须在服务器上检测到的Internet Explorer(和其他浏览器不理解XHTML),并更改内容类型text/html -如果呈现的application/xhtml+xml内容类型IE会提示用户要下载的文件; 对于text/xml ,它会显示漂亮的打印的XML文档树(虽然偶尔会感到困惑,并设法通过内容嗅探正确显示HTML)。

编辑:作为codedread说,如果你想为原料SVG文件,您需要使用SVG内容类型,但在这种情况下,文件实际上是XHTML,在一个单独的命名空间内联SVG,所以XHTML类型是正确的。



Answer 2:

你可能需要设置你的服务器,以服务为SVG正确的MIME类型:image / SVG + XML

更多资讯: http://www.planetsvg.com/tools/mime.php



Answer 3:

作为NickFitz和codedread提到,对于嵌入SVG工作您的页面必须担任application/xhtml+xml 。 有使用Tomcat实现这一目标至少在三个方面:

  1. 编辑您的服务器或应用程序的web.xml更改默认MIME类型或MIME类型为特定的文件扩展名。
  2. 如果你的页面是一个JSP,在设置的contentType 页面指令
  3. 如果要容纳IE用户, 动态地设置的contentType基于所述HTTP_ACCEPT在HTTP请求中发送报头( 我在博客中的移动设备的上下文中这一方法 )。

另外,分裂您SVG内容到一个单独的文件,那么它不会不管你的网页是什么内容类型。 IE浏览器将不渲染SVG,但它至少会显示该页面的其余部分。 你可以把所有的SVG出来的页面和链接到它的,但仍然有一些浏览器兼容性问题 。

最后,如果你只是想看看静态页面与嵌入SVG关闭您的本地硬盘上没有涉及的服务器,从改变文件扩展名.html.xhtml可能工作。



Answer 4:

如果你使用Apache服务器,你可以指示哪些MIME类型来使用这些图片,只是这两行添加到您.htaccess文件:

AddType image/svg+xml svg svgz
AddEncoding gzip svgz


文章来源: SVG not working when access on localhost. Why?