При отладке приложений jQuery, использующих AJAX, мне часто приходится видеть json, который сервис возвращает браузеру. Поэтому я добавлю URL-адрес для данных JSON в адресную строку.
Это хорошо с ASPNET, потому что в случае ошибки кодирования, я вижу диагноз ASPNET в браузере:
Но когда серверный код работает правильно и фактически возвращает JSON, IE предлагает мне загрузить его, поэтому я не вижу ответ.
Можно ли заставить IE НЕ делать этого, другими словами, просто отображать его так, как если бы он был простым текстом?
Я знаю, что мог бы сделать это, если бы я установил заголовок Content-Type text/plain
.
Но это, в частности, контекст приложения ASPNET MVC, которое автоматически устанавливает ответ, когда я использую JsonResult для одного из моих методов действия. Также я хочу сохранить соответствующий тип контента, а не менять его только для поддержки отладки.
Ответы:
Я нашел ответ.
Вы можете настроить IE8 для отображения application / json в окне браузера, обновив реестр. Там нет необходимости во внешнем инструменте. Я не тестировал это широко, но он работает с IE8 на Vista.
Чтобы использовать это, помните, все обычные предостережения об обновлении реестра применяются. Стоп IE. Затем вырежьте и вставьте следующее в файл под именем
json-ie.reg
.Затем дважды щелкните файл .reg. Перезапустите IE. Новое поведение, которое вы получаете при щекотке URL, который возвращает документ с
Content-Type: application/json
илиContent-Type: text/json
похоже на это:Что это делает, почему это работает:
25336920-03F9-11cf-8FD0-00AA00686F13
Является CLSID для «Просмотр на месте» действия. По сути, эта запись реестра сообщает IE, что для документов, имеющих mime-тип приложения / json, просто просмотрите его на месте. Это не повлияет на документы приложения / json, загруженные с помощью<script>
тегов, XHR и т. Д.Ключи CLSID и Encoding получают те же значения
image/gif
, чтоimage/jpeg
и для , иtext/html
.Эта подсказка появилась на этом сайте и в статье Microsoft « Обработка типов MIME в Internet Explorer» .
В FF вам также не нужно внешнее дополнение. Вы можете просто использовать
view-source:
псевдопротокол. Введите такой адрес в адресную строку:Этот псевдопротокол раньше поддерживался в IE, вплоть до WinXP-sp2, когда Microsoft отключила его по соображениям безопасности.
источник
reg add "HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json" /t REG_SZ /d "{25336920-03F9-11cf-8FD0-00AA00686F13}"; reg add "HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json" /v Encoding /t REG_DWORD /d 0x08000000
text/json
ключ.У меня была похожая проблема. Я использовал jQuery «$. GetJSON», и все отлично работало в Firefox и Chrome.
Но это не сработало в IE. Поэтому я попытался получить прямой доступ к URL-адресу json, но в IE он спросил, хочу ли я загрузить файл.
После долгих поисков я обнаружил, что в результате должен быть заголовок с типом контента, в моем случае тип контента был:
Но когда страница, которая сделала запрос, получает этот json, в IE вам нужно указать один и тот же тип содержимого, в моем случае:
объятий
источник
text/plain; charset=UTF-8
. Не нужно текст / HTML.Над решением не хватало, и код ниже должен работать в любой ситуации:
Просто сохраните его в файле json.reg и запустите для изменения вашего реестра.
источник
Если у вас все в порядке с тем, что IE открывает JSON в блокноте, вы можете изменить программу по умолчанию для файлов .json в вашей системе на Блокнот.
Для этого создайте или найдите файл .json, щелкните правой кнопкой мыши и выберите «Открыть с помощью» или «Выбрать программу по умолчанию».
Это может пригодиться, если вы случайно захотите использовать Internet Explorer, но ваша ИТ-компания не позволит вам редактировать реестр. В противном случае я рекомендую ответы выше.
источник
Я использую Fiddler с плагином JSONViewer для проверки JSON. Я не думаю, что возможно заставить IE вести себя без возни с реестром, возможно. Вот немного информации.
источник
Изменение настроек MIME-типа в IE будет влиять на то, как IE обрабатывает все ответы JSON.
Изменение заголовка mime-type на text / html фактически сообщит любому браузеру, что возвращаемый вами ответ JSON - это не JSON, а обычный текст.
Ни один из вариантов не является предпочтительным.
Вместо этого вы захотите использовать плагин или инструмент, такой как вышеупомянутый Fiddler, или любой другой прокси-сервер инспектора сетевого трафика, где вы можете каждый раз выбирать, как обрабатывать ответ JSON.
источник
text/html
не говорит браузеру, что ответом является простой текст, но HTML. Если вы решили, что хотите простой текст, используйтеtext/plain
. В противном случае вы можете столкнуться с некоторыми интересными уязвимостями XSS.FireFox + FireBug очень хорош для этой цели. Для IE есть панель инструментов разработчика, которую я никогда не использовал и не собираюсь использовать, поэтому я не могу дать много отзывов.
источник
У меня была такая же проблема с XMLHttpRequest. Сайт работает безупречно в Chrome и FF, а также в десятках и десятках браузеров Internet Explorer. Этот ОДИН компьютер (который наша компания настраивает на демонстрацию), конечно, решил, что собирается запросить сохранение ответа json на запрос ajax.
Принятое решение regedit ниже исправило это. Спасибо.
источник
Вы можете увидеть ответ в Fiddler: http://www.fiddler2.com/fiddler2/
Это хороший инструмент для таких вещей!
источник