Posting masalah serupa dengan solusi yang saya hadapi.
Semoga dapat membantu seseorang dengan persyaratan serupa preserving hash in IE
untuk 302 pengalihan.
Menambahkan bagian penting dari jawaban alih-alih tautan saja
Kami menggunakan SiteMinder
otentikasi dalam aplikasi kami.
Saya menemukan bahwa setelah otentikasi berhasil, SiteMinder
lakukan 302 redirection
ke halaman aplikasi yang diminta pengguna dengan menggunakan variabel tersembunyi formulir loginvalue
(di mana ia menyimpan URL yang diminta pengguna /myapp/
- without hash fragment
karena tidak akan dikirim ke server) dengan nama yang mirip dengan redirect
. Contoh formulir di bawah ini
Karena nilairedirect
variabel tersembunyi hanya berisi tanpa fragmen hash dan ini adalah pengalihan 302, fragmen hash secara otomatis dihapus oleh IE bahkan sebelum masuk ke aplikasi kami dan solusi apa pun yang kami coba dalam kode aplikasi kami tidak berhasil./myapp/
IE hanya mengalihkan /myapp/
dan mendarat di halaman beranda default aplikasi kami https://ourapp.com/myapp/#/home
.
Telah menyia-nyiakan waktu hampir sehari untuk mencari tahu perilaku ini.
Solusinya adalah:
Telah mengubah form login variabel tersembunyi ( redirect
) nilai untuk memegang fragmen hash dengan menambahkan window.location.hash
bersama dengan nilai yang ada. Mirip dengan kode di bawah ini
$(function () {
var $redirect = $('input[name="redirect"]');
$redirect.val($redirect.val() + window.location.hash);
});
Setelah perubahan ini, redirect
variabel tersembunyi menyimpan nilai URL yang diminta pengguna sebagai /myapp/#/pending/requests
dan SiteMinder
mengarahkannya ke /myapp/#/pending/requests
IE.
Solusi di atas berfungsi dengan baik di ketiga browser Chrome, Firefox and IE
.
Terima kasih kepada @AlexFord untuk penjelasan mendetail dan memberikan solusi untuk masalah ini.