Невозможно просмотреть исходный файл XML с помощью IE8 - PullRequest
1 голос
/ 01 июля 2010

у меня есть веб-страница, которая возвращает XML с и xsl преобразованием таблицы стилей, например ::

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/xsl' href='/css/homepage.xsl'?>
<MyData>
   ...
</MyData>

Правильно отображает преобразованный XSL в формате HTML. Но когда я пытаюсь просмотреть источник XML, Internet Explorer выдает ошибку:

Исходный файл XML недоступен для просмотра

Некоторые человек утверждают , что это поведение по проекту .

Но я могу дать вам сайт, на котором идеально работает желаемое поведение ( Blizzards WoW Armory ) (т. Е. Вы можете просмотреть XML-источник):

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/_layout/pageIndex.xsl"?>
<page globalSearch="1" lang="es_mx" requestUrl="/index.xml" type="front">
  <pageIndex>
    <related-info/>
  </pageIndex>
</page>

Таким образом, аргумент, что «это поведение является намеренным» опровергается прямым наблюдением.

Что не так с my XML, что исходный XML не может быть показан?


ведет вас по неверному пути

Вот дополнительная информация.

Заголовки Http-ответа с (рабочего) сайта Blizzard:

GET http://www.wowarmory.com/ HTTP/1.1

HTTP/1.1 200 OK
...
Content-Type: text/xml;charset=UTF-8
Content-Length: 233

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="/_layout/pageIndex.xsl"?><page globalSearch="1" lang="es_mx" requestUrl="/index.xml" type="front">
  <pageIndex>
    <related-info/>
  </pageIndex>
</page>

А вот заголовки ответа из моего (borken) xml:

GET http://www.example.com/default.ashx HTTP/1.1

HTTP/1.1 200 OK
...
Content-Type: text/xml; charset=utf-8
...
Content-Length: 131974

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/xsl' href='/css/homepage.xsl'?>
<MyData>
   ...
</MyData>

Смотри также

Ответы [ 4 ]

2 голосов
/ 01 июля 2010

tl; др : no-cache было включено

Длинная версия

Я наткнулся на сообщение в блоге от парня, имеющего похожую проблему:

Используя функцию автоматической отладки в Fiddler (функцию, которую я никогда не использовал), он сузил ее до наличия определенной записи в заголовках ответа:

Vary: *

Он не понимал , почему этот заголовок вызывает разрыв IE, но он смог удалить его, и это решило его проблему. В моем ответе нет заголовка vary: 0, но он действительно дал мне направление.

Я читал документацию, касающуюся этой опции: Метод HttpCachePolicy.SetOmitVaryStar . Одна вещь привлекла мое внимание:

Примечание Использование заголовка var: * может отключить все кэширование клиента.

И поэтому я подумал, что причина того, что «источник XML недоступен для просмотра», заключается в том, что существует политика, заставляющая IE удалять источник XML, как только это будет сделано (т.е. не кэшировать его) 1034 *

Следуя по стопам этого парня, я откопал скрипач и включил Автоматические контрольные точки после ответа . Оказывается, вы можете затем отбросить заголовки ответа, переставить, добавить, изменить, удалить материал.

Оригинальные заголовки (сбои)

HTTP/1.1 200 OK
Date: Thu, 01 Jul 2010 02:53:35 GMT
Server: Microsoft-IIS/7.0
Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/xml; charset=utf-8
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Content-Length: 134772
Via: 1.1 www.example.com

<?xml version="1.0" encoding="utf-8"?>
...

я заметил, что в моих заголовках есть записи, относящиеся к кешированию:

Cache-Control: no-cache
Pragma: no-cache

возможно, если я уберу их? я захожу в точку в фиддлере и вручную удаляю эти две строки, оставляя:

Удалить заголовки управления кешем

HTTP/1.1 200 OK
Date: Thu, 01 Jul 2010 02:55:06 GMT
Server: Microsoft-IIS/7.0
Content-Type: text/xml; charset=utf-8
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Content-Length: 134772
Via: 1.1 www.example.com

<?xml version="1.0" encoding="utf-8"?>
...

Примечание: Заголовки не найдены по ошибке, содержимое всегда устарело, и я хочу клиент обновлять каждый раз.

Мое первоначальное решение устраняет проблему, но вводит новую - поскольку содержимое всегда равно . Хотя я хочу, чтобы т.е. извлекал каждый раз, я не хочу, чтобы он удалял свою локальную копию.

Строка в ashx, которая вызывает у меня горе:

//client don't cache it (it's too volatile)
context.Response.Cache.SetCacheability(HttpCacheability.NoCache); 

, который превращается в:

Cache-Control: no-cache

Удаление строки оставляет Cacheability по умолчанию (Private), давая значение ответа:

Cache-Control: private

Это позволяет клиенту кэшировать содержимое, и я могу просматривать источник в браузере.

1 голос
/ 01 июля 2010

Я не могу воспроизвести это поведение. Проверьте мой XML / XSLT-управляемый сайт http://www.aranedabienesraices.com.ar

В IE8 я могу видеть источник и результат преобразования (меню Сервис).

Может ли это быть связано с частным кешем?

0 голосов
/ 15 октября 2014

У меня была такая же проблема. Я изменил Response.ContentType на «text / xml», который ранее был «application / xml». Формат «text / xml» позволяет «Просмотреть исходный код».

В чем разница между text / xml и application / xml для ответа веб-службы

0 голосов
/ 26 октября 2012

В те дни у меня была такая же проблема в Internet Explorer 9, но я использовал вид совместимости и версии 7 и 8, которые он предоставляет в инструментах разработчика.

<FilesMatch "\.(php)$">
    Header unset Cache-Control
    Header set Cache-Control "max-age=86400, s-maxage=86400, no-store"
    Header set Pragma "cache"
    Header set Expires "Mon, 5 Aug 2013 20:00:00 GMT"
</FilesMatch>

изменил заголовки элемента управления кэшем для хранения, и теперь я могу видеть XML-источник файла

<FilesMatch "\.(php)$">
    Header unset Cache-Control
    Header set Cache-Control "max-age=86400, s-maxage=86400, store"
    Header set Pragma "cache"
    Header set Expires "Mon, 5 Aug 2013 20:00:00 GMT"
</FilesMatch>

Я получил эту ошибку, пытаясь выяснить, почему страница выглядит нормально на каждомодин браузер в Windows и Linux не работал в представлении совместимости или более старых версиях Explorer.Эта проблема до сих пор остается загадкой, поскольку документ и заголовки установлены в utf-8.Но это другое дело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...