Jak zachować fragment uri podczas safari po przekierowaniu?
Moja aplikacja gwt / gae wykorzystuje działania i miejsca. Aby utworzyć procesy asynchroniczne (takie jak resetowanie hasła lub weryfikacja prawa własności do adresu e-mail), używam wzorca, w którym stan aktywności można tokenizować i przechowywać w magazynie danych, a następnie pobrać i wznowić później. Aby pobrać token stanu, mam miejsce, które pobiera argument jako token rozszerzony, pobiera go z magazynu danych, a następnie przechodzi w odpowiednie miejsce, aby je wznowić. Dzięki temu mogę utworzyć link do określonego stanu mojej aplikacji, który może być rozpowszechniany za pośrednictwem poczty elektronicznej. na przykład:
http://mydomain.com/#signup:anJlbmZyb0BldGhvc2VkZ2UuY29tfDEzNzQxOTIxNjU3NjQ=
W takim przypadku powyższy link zostanie wysłany na adres e-mail użyty podczas rejestracji, a aplikacja wznowi aktywność rejestracyjną określoną przez argument skrótu.
Wszystko działało dobrze do niedawna, kiedy dodałem certyfikat SSL i wymuszony https dla wszystkich żądań, dodając następujący kod do mojego pliku 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>
To ograniczenie wymusza https poprzez (wierzę) przekierowanie 301 do portu 443. Działa jak urok w Chrome, Firefox i IE .... jednak safari wydaje się usuwać fragment URL po przekierowaniu ... Myślę, że możesz zobaczyć mój problem ! Jak zapobiegać upuszczaniu fragmentu adresu URL przez safari ?!
Aktualizacja 8.1.13Po wyczerpujących badaniach, myślę, że zidentyfikowałem przyczynę, ale jeszcze nie znalazłem dobrego rozwiązania. Dokładny opis problemu został przedstawiony w notatce w3cObsługa identyfikatorów fragmentów w przekierowanych adresach URL (1999)
Zasadniczo specyfikacja http nie była jasna co do obsługi fragmentów adresu URL podczas przekierowań 3xx; i safari wybrało upuszczenie fragmentu po przekierowaniu. Zobacz następujący błąd bugzilli:
https://bugs.webkit.org/show_bug.cgi?id=24175
Pożądane zachowanie jest opisane przez problemy agenta użytkownika w3c:
http://www.w3.org/TR/cuap#uri
W świetle tego wszystkiego uważam, że jest to kwestia safari (webkit). Czego nie rozumiem, dlaczego nie dotyczy innych przeglądarek webkit? Czy istnieje znane obejście?