【发布时间】:2016-05-12 09:19:43
【问题描述】:
我是网络编程的新手,并且遇到了从 spark-java 2.5 提供静态 svg 文件的问题,如果我改用 python SimpleHTTP webserver,似乎不存在该文件。
从我的 spark-java 应用程序提供的 svg 图像文件不会在浏览器中呈现 - 而是显示缺失内容的标准图形。
我尝试过的:
- 如果我通过在浏览器中打开“http://localhost:4567/amcharts/images/dragIconRoundBig.svg”直接提供 svg,图像会呈现。
-
当通过以下 html(svg 元素的一部分)从我的 index.html 页面打开相同的图像文件时:
<g aria-label="Zoom chart using cursor arrows" role="menuitem" transform="translate(-7,3)" visibility="visible"> <image x="0" y="0" width="35" height="35" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost:4567/amcharts/images/dragIconRoundBig.svg"></image> <rect x="0.5" y="0.5" width="25" height="40" rx="0" ry="0" stroke-width="0" fill="#000" stroke="#000" fill-opacity="0.005" stroke-opacity="0.005" transform="translate(5,-2)"></rect> </g>
它不渲染。据我所知,没有 http 或其他错误。
如果我在不同的浏览器上重复第 2 步(尝试过 Chrome 和 Safari),或者在禁用 AddBlocker 之后,结果是一样的。
如果我使用 python 内置的 SimpleHTTP webserver 而不是 spark-java 重复第 2 步,提供相同的静态内容,则一切正常。
-
我比较了来自以下位置的 svg 文件的响应标头:
火花-java:
HTTP/1.1 200 OK Date: Wed, 11 May 2016 15:31:00 GMT Content-Encoding: gzip Transfer-Encoding: chunked Server: Jetty(9.3.6.v20151106)和python SimpleHTTP:
Content-Length:679 Content-type:image/svg+xml Date:Thu, 12 May 2016 07:46:02 GMT Last-Modified:Wed, 11 May 2016 13:42:27 GMT Server:SimpleHTTP/0.6 Python/2.7.9
问题可能是 spark-java 没有指定 Content-type 吗?这是因为它在分块吗?
我真正想知道的是如何让它发挥作用?
【问题讨论】:
-
我遇到了类似的问题,Spark 无法正确设置静态元素的内容类型。我建议你用 spark 2.3 试试这个。请分享结果。
-
使用 spark-java 2.3 时问题消失。 @Laercio,非常感谢您的建议。我还尝试了 2.4 版,并且可以报告该问题存在于那里以及 2.5 中。