Могу ли я заставить IEMobile не удалять # из URL-адреса перенаправления?

У меня возникла проблема с доступом IEMobile к моему сайту. У определенного перенаправления, которое я использую, есть код ответа 302 и заголовки (да, это app-engine):

Разработка сервера /1.0 Python/2.5.2
Дата Вторник, 04 Ноя 2008 16:47:02 GMT
Content-Type   text/html; кодировка = UTF-8
Cache-Control  no-cache
Расположение http://localhost/games/edit-game.html? Game=110&frame_to_edit=3#input-top
Длина контента 0

Это прекрасно работает для большинства браузеров. Войдите в IEMobile (через Windows Mobile 6.1). Получив этот ответ, IEMobile направляется в

HTTP: //localhost/games/edit-game.html игра = 110 & frame_to_edit = 3

Обратите внимание на отсутствие #input-top, Что я могу сделать?

3 ответа

Решение

Чтение RFC2616 указывает

Расположение: absoluteURI

где абсолютный URI определен RFC2396

Трассируя определение absoluteURI, символ # не является частью определения URI, это подтверждается разделом 4.1

4.1. Идентификатор фрагмента

Когда ссылка URI используется для выполнения действия поиска на
идентифицированный ресурс, необязательный идентификатор фрагмента, отделенный от
URI символом перекрестной штриховки ("#"), состоит из дополнительных
справочная информация, которая должна быть интерпретирована пользовательским агентом после успешного завершения действия поиска. Как таковой, он не является частью URI, но часто используется вместе с URI.

Короче говоря, #fragment не является частью URI и удаляется браузером как часть заголовка Location:.

Дейв прав, прибегая к помощи гуглинга, возникает такая же проблема.

Уродливый обходной путь: используйте мета-тег обновления вместо перенаправления, если вы хотите поддерживать этот браузер.

Вы мало что можете сделать; похоже, это ошибка в вашем браузере (разработчики, по-видимому, пропустили ошибку RFC 2616).

Другие вопросы по тегам