Как сохранить фрагмент URI в сафари при перенаправлении?
Мое приложение gwt / gae использует действия и места. Чтобы создать асинхронные процессы (например, сброс пароля или подтверждение владения адресом электронной почты), я использую шаблон, в котором состояние активности можно разбить на токены и сохранить в хранилище данных, а затем извлечь и возобновить позже. Чтобы получить токен состояния, у меня есть место, которое принимает в качестве аргумента расширенный идентификатор токена, извлекает его из хранилища данных, а затем перемещается в соответствующее место по мере необходимости для возобновления обработки. Это позволяет мне создать ссылку на конкретное состояние моего приложения, которую можно распространять по электронной почте. например:
http://mydomain.com/#signup:anJlbmZyb0BldGhvc2VkZ2UuY29tfDEzNzQxOTIxNjU3NjQ=
В этом случае вышеуказанная ссылка будет отправлена на адреса электронной почты, использованные во время регистрации, и приложение возобновит действие регистрации, определенное аргументом хеша.
До недавнего времени все работало хорошо, когда я добавил сертификат SSL и принудительно установил https для всех запросов, добавив следующий код в мой файл web.xml:
<security-constraint>
<web-resource-collection>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
Это ограничение применяет https через (я полагаю) перенаправление 301 на порт 443. Работает как Charm в Chrome, Firefox и IE .... однако safari, кажется, отбрасывает фрагмент URL при перенаправлении ... Я думаю, вы видите мою проблему ! Как я могу предотвратить сафари от удаления фрагмента URL ?!
Обновление 8.1.13После исчерпывающих исследований, я думаю, что я определил первопричину, но мне еще предстоит найти хорошее решение. Подробное описание проблемы приведено в памятке w3c.Обработка идентификаторов фрагментов в перенаправленных URL (1999)
По сути, спецификация http была неясной в отношении обработки фрагментов URL во время переадресации 3xx; и сафари решил отбросить фрагмент при перенаправлении. Смотрите следующую ошибку в bugzilla:
https://bugs.webkit.org/show_bug.cgi?id=24175
Желаемое поведение описывается проблемами агента пользователя w3c:
http://www.w3.org/TR/cuap#uri
Итак, в свете всего этого, я считаю, что это проблема сафари (webkit). Чего я не понимаю, так это почему не влияют другие браузеры webkit? Есть ли известный обходной путь?