Jawaban:
Apa yang terjadi jika browser menerima respons pengalihan ke permintaan ajax?
Jika server mengirim pengalihan (alias respons 302 plus Lokasi: header) pengalihan tersebut secara otomatis diikuti oleh peramban. Respons terhadap permintaan kedua (dengan asumsi itu juga bukan pengalihan lain) adalah apa yang terpapar ke program Anda.
Bahkan, Anda tidak memiliki kemampuan untuk mendeteksi apakah respons 302 telah terjadi. Jika 302 redirect mengarah ke 200, maka program Anda bertindak secara identik seolah-olah permintaan asli mengarah langsung ke 200.
Ini adalah pengalaman saya dan perilaku yang disebutkan dalam spesifikasi .
Pembaruan 2016: Waktu telah berlalu, dan kabar baiknya adalah API fetch baru () khusus akan menawarkan kontrol yang lebih baik tentang bagaimana pengalihan ditangani , dengan perilaku default mirip dengan XHR. Yang mengatakan, itu hanya bekerja di mana fetch () diimplementasikan secara asli . Versi pengambilan polyfill () —yang didasarkan pada XHR — terus memiliki batasan XHR . Untungnya, dukungan peramban asli tampaknya berhasil dengan baik.
The ajax-request
akan mengikuti redirect afaik. Konten aktual ( .responseText
, .responseXML
) akan menjadi konten dari halaman yang Anda arahkan ke.
Anda mungkin dapat mencegat pengalihan ( status-code
, location-header
) pada readyState
2 atau 3, tetapi tidak yakin tentang hal itu.
getAllResponseHeaders()
sama.