MSXML客户端XSLT不发送accept-language标头

时间:2012-01-04 19:15:21

标签: http xslt msxml

在IE9中使用客户端XSLT时,我注意到IE通过document()方法为获取XSL和后续请求的请求发送不同的头,而不是请求原始XML文件。特别是accept-language标题完全丢失。

引导程序XML如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="transform.xsl"?>
<root/>

和像这样的XSLT

...
<body>
<xsl:apply-templates select="document('section.xml')"/>
</body>
...

我注意到XSLT和section.xml文件都加载了没有接受语言标头的HTTP请求。 获取XML文件的请求标头如下所示:

Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-US,de-DE;q=0.5
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

而其他资源则加载

Accept: */*
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: Keep-Alive

是功能还是错误?其他浏览器(如FF或Chrome)会发送相同的标头。

可以在my test server

上找到一个工作示例

此效果会导致实际项目出现问题,因为XML文件是动态生成的,包含面向最终用户的内容,这些内容是基于accept-language标头协商的。这会失败,因为变压器没有发送标头。

欢迎任何有关变通方法的见解或建议! 谢谢! 卡斯滕

1 个答案:

答案 0 :(得分:0)

我投票支持“bug”,因为对依赖请求重复接受语言标头似乎更合乎逻辑(不确定是否会在任何地方指定)。您是否可以将语言首选项信息作为获取XSL的请求的查询参数?