Chrome说:资源解释为样式表,但使用MIME类型application/xml进行传输

Jon*_*han 9 xml xslt

我有一个XML文件,使用XSL文件设置样式.在Firefox中打开XML文件时,我没有遇到任何问题(虽然奇怪的是,有时它只会在我点击"重新加载"后显示),但在Chrome/Chromium中我收到错误消息:

Resource interpreted as Stylesheet but transferred with MIME type application/xml
Run Code Online (Sandbox Code Playgroud)

文件在这里:http://jonreeve.com/test/mike/biblexml.xml

我不认为XML/XSL语法有任何不规则之处,所有链接似乎都措辞正确.

此外,这似乎与这里所有类似的问题类似,这些问题似乎与javascript和其他应用程序有关.这个只是纯XML/XSL.

Mik*_*ikl 7

XSLT 1.0规范中明确指出,合适的MIME类型XSLT是 文本/ XML应用/ XML

MIME媒体类型text/xml和application/xml [RFC2376]应该用于XSLT样式表.可能会专门为XSLT样式表注册媒体类型; 如果和何时,也可以使用该媒体类型.

XSLT 2.0中,这已更改为application/xslt + xml.

在没有XSLT样式表的注册媒体类型的情况下,一些供应商的产品采用了不同的约定,特别是type =" text/xsl ".

Chrome 32.0.1700.107会返回错误:

资源解释为样式表,但使用MIME类型text/xml进行传输;

资源解释为样式表,但使用MIME类型application/xml进行传输;

资源解释为样式表,但使用MIME类型application/xslt + xml进行传输;

如果传递text/xsl类型,则Chrome不会返回任何错误.

  • 有一个开放的 Chrome 问题 https://bugs.chromium.org/p/chromium/issues/detail?id=447866。投票将提高其优先级。 (2认同)

Tho*_*s W 1

XSLT 应该以 MIME 类型交付application/xslt+xml,而不是application/xml. 您应该配置您的服务器来执行此操作。您需要一个.htaccess包含以下行的文件

AddType application/xslt+xml .xsl
Run Code Online (Sandbox Code Playgroud)

这会将扩展名.xsl与正确的 MIME 类型相关联。.htaccess如果XSLT 目录或父目录中已有文件,则可以添加该行。否则,创建这样的文件。