В моем приложении gwt/gae используются действия и места. Чтобы создать асинхронные процессы (например, сброс пароля или подтверждение права собственности на адрес электронной почты), я использую шаблон, в котором состояние активности можно маркировать и хранить в хранилище данных, а затем извлекать и возобновлять позже. Чтобы получить токен состояния, у меня есть место, которое принимает расширенный идентификатор токена в качестве аргумента, извлекает его из хранилища данных, а затем переводит в нужное место по мере необходимости, чтобы возобновить процесс. Это позволяет мне создать ссылку на конкретное состояние моего приложения, которое может быть распространено по электронной почте. например:
http://mydomain.com/#signup:anJlbmZyb0BldGhvc2VkZ2UuY29tfDEzNzQxOTIxNjU3NjQ=
В этом случае вышеуказанная ссылка будет отправлена на адрес электронной почты addres, используемый во время регистрации, и приложение возобновит активность регистрации, указанную аргументом хеша.
Все работает хорошо до недавнего времени, когда я добавил 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. Работает как очарование в Chrome, Firefox и IE.... однако сафари, похоже, отбрасывают фрагмент URL-адреса при перенаправлении... Я думаю, вы можете см. мою проблему! Как предотвратить удаление Safari фрагмента URL?
Обновление 8.1.13
После изнурительных исследований, я думаю, что я определил первопричину, но мне еще предстоит найти хорошее решение. Подробное описание проблемы было представлено в записке w3c Обработка идентификаторов фрагментов в перенаправленных URL-адресах (1999)
В основном, http spec неясно, как обрабатывать фрагменты URL во время перенаправления 3xx; и сафари решили отказаться от фрагмента при перенаправлении. См. Следующую ошибку bugzilla:
https://bugs.webkit.org/show_bug.cgi?id=24175
Желаемое поведение описывается проблемами w3c commun user agent:
http://www.w3.org/TR/cuap#uri
Итак, в свете всего этого, я считаю, что это проблема сафари (webkit). Я не понимаю, почему другие браузеры Webkit не затронуты? Известно ли обходное решение?