Como faço para preservar o fragmento uri no safari após o redirecionamento?
Meu aplicativo gwt / gae utiliza atividades e lugares. Para criar processos assíncronos (como redefinir uma senha ou verificar a propriedade de um endereço de email), uso um padrão em que o estado de uma atividade pode ser tokenizado e armazenado no armazenamento de dados, depois recuperado e retomado posteriormente. Para recuperar o token de estado, tenho um local que usa um ID de token aumentado como um argumento, o obtém do armazenamento de dados e, em seguida, navega até o local apropriado, conforme necessário, para continuar o processo. Isso me permite criar um link para um estado específico do meu aplicativo, que pode ser distribuído por email. por exemplo:
http://mydomain.com/#signup:anJlbmZyb0BldGhvc2VkZ2UuY29tfDEzNzQxOTIxNjU3NjQ=
Nesse caso, o link acima seria enviado para os endereços de email usados durante a inscrição e o aplicativo retomaria a atividade de inscrição identificada pelo argumento hash.
Tudo funcionou bem até recentemente, quando adicionei um certificado SSL e https reforçado para todas as solicitações, adicionando o seguinte código ao meu 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>
Esta restrição impõe https via (eu acredito) um redirecionamento 301 para a porta 443. Funciona como um encanto no Chrome, Firefox e IE .... no entanto safari parece cair o fragmento de url ao redirecionar ... Eu acho que você pode ver o meu problema ! Como faço para evitar que o safari solte o fragmento de URL?
Atualização 8.1.13Depois de exaustivas pesquisas, acho que identifiquei a causa raiz, mas ainda não encontrei uma boa solução. Uma descrição completa do problema foi fornecida no memorando w3cManipulação de identificadores de fragmento em URLs redirecionados (1999)
Basicamente, a especificação http não estava clara quanto ao manuseio de fragmentos de url durante redirecionamentos 3xx; e safari escolheu largar o fragmento quando redirecionado. Veja o seguinte bug bugzilla:
https://bugs.webkit.org/show_bug.cgi?id=24175
O comportamento desejado é descrito pelos problemas do agente do usuário comum do w3c:
http://www.w3.org/TR/cuap#uri
Então, à luz de tudo isso, acredito que seja um problema de safári (webkit). O que não entendo é por que outros navegadores de webkit não são afetados? Existe uma solução conhecida?