CSS 在通过 Vaadin 请求处理程序提供服务时,在 Internet Explorer 忽略的 SVG 文件中导入

CSS imported in a SVG file ignored by Internet Explorer when served through Vaadin Request Handler

我有一个用于显示 svg 文件的 Vaadin 小部件。这些 svg 文件可以导入 css 文件和图像。 css-文件除样式外,还可以引用一些字体文件。

为了提供所有这些文件,我实现了自定义 Vaadin RequestHandler 并将其添加到会话中。

为了在我的小部件中包含 svg,我测试了多项内容:对于 Firefox 和 Chrome,将 svg 作为 iframe 的 src 嵌入工作正常。我也尝试了 jquery-addon jquery-svg,这里也没有问题。

然而,在 Internet Explorer 上(我使用的是 IE11,也尝试过低至 IE9 的兼容模式),这两种方法都会导致相同的问题: svg 已正确加载。所有图像都正确加载。 css-文件被正确请求和提供,我检查了响应,它符合预期。但是,CSS 内容被完全忽略。既没有对引用字体文件的任何进一步请求,也根本没有应用文件中的 css 规则。

我测试了将相同的 svg 文件及其资源作为静态资源(例如在 VAADIN 文件夹中)或在它们自己的上下文中放置在服务器上,并且内容在所有浏览器上加载得很好,问题仅在通过会话 RequestHandler 提供文件时发生。

我还尝试将 css 文件的内容复制到 svg 文件本身,没有 @import。这再次工作正常,即使使用 RequestHandler,但我宁愿保留 css 和 svg split.

这里有没有人对此有一些经验或运行遇到过类似的问题?

谢谢,

马蒂亚斯

我通过比较响应发现了问题:缺少响应的 contentType。它是为静态资源自动设置的,但我必须在 Vaadin 请求处理程序中手动设置。 (感谢安德烈)