При использовании клиентского XSLT в IE9 я заметил, что IE отправляет разные заголовки для запросов, которые выбирают XSL и последующие запросы, инициированные с помощью метода document()
, чем для запроса исходного 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, отправляют идентичные заголовки.
Рабочий пример можно найти на моем тестовом сервере
Этот эффект вызывает проблемы в реальном проекте, потому что файлы XML генерируются динамически и содержат контент для конечного пользователя, согласованный на основе заголовка accept-language
. Это не удается, поскольку преобразователь не отправляет заголовок.
Любые идеи или предложения для обходных путей приветствуются!
Спасибо!
Карстен