Могу ли я заставить 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).