Возникла проблема с ответом по умолчанию Content-Type - PullRequest
4 голосов
/ 24 мая 2011

У меня есть веб-сайт со следующим Doctype:

<!DOCTYPE HTML>
<html>...</htm>

Я обнаружил проблему, приводившую к поломке некоторых мобильных браузеров (ежевика и старые андроиды).Например, на Android при отправке запроса он отправляет следующий заголовок:

Accept: application/xml,appliation/xhtml+xml,text/html ...

Проблема в том, что мой сайт не соответствует XHTML, но IIS решает, что, поскольку браузер, запрашивающий страницу, предпочитает xhtml, тоэто должно служить тому, что вместо text/html.

я попытался переопределить его, добавив <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-8"> на страницу, но это не работает.

Я пытаюсь понятьСамый простой способ сказать iis прекратить обслуживание xhtml для всех запросов на http://mydomain.com/mobile.Я думал о том, чтобы сделать это, переписав Response.Content-Type в HttpModule.

Есть ли что-то, что я здесь упускаю?Какой лучший способ это исправить?

Ответы [ 2 ]

1 голос
/ 27 октября 2011

Попробуйте установить для DOCTYPE значение <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> и посмотрите, поможет ли это. Также взгляните на следующую ссылку:

W3C Рекомендуемый список объявлений Doctype

1 голос
/ 09 октября 2011

IIS не обладает той функциональностью, о которой вы упомянули (для переоценки содержимого типа вывода из .NET), поскольку это зависит от приложения. Что происходит на мобильных устройствах, когда они «ломаются», можете ли вы предоставить трассировку отладки HTTP?

Чтобы проверить, действительно ли проблема в ContentType, добавьте это в событие Page_Load одной из ваших страниц, а затем просмотрите эту страницу на соответствующем мобильном телефоне.

Response.ContentType = "text/html";

Мобильные браузеры имеют свои особенности для настольных версий, они анализируют JavaScript, по-разному обрабатывают элементы DOM. Например, в Mobile Safari есть неполный метод Date.parse (), из-за которого JS ломается на этой странице.

Попробуйте запустить мобильный браузер в режиме отладки (если это возможно) и посмотрите, что является настоящей ошибкой. Поскольку я не могу понять, как IIS изменил бы тип контента, особенно на тип XHTML, что означает, что базовый HTML должен быть perfect ,

...