Selamat datang di masa depan!
Sekarang kami memiliki properti "responseURL" dari objek xhr. YAY!
Lihat Bagaimana cara mendapatkan url tanggapan di XMLHttpRequest?
Namun, jQuery (setidaknya 1.7.1) tidak memberikan akses ke objek XMLHttpRequest secara langsung. Anda dapat menggunakan sesuatu seperti ini:
var xhr;
var _orgAjax = jQuery.ajaxSettings.xhr;
jQuery.ajaxSettings.xhr = function () {
xhr = _orgAjax();
return xhr;
};
jQuery.ajax('http://test.com', {
success: function(responseText) {
console.log('responseURL:', xhr.responseURL, 'responseText:', responseText);
}
});
Ini bukan solusi bersih dan saya kira tim jQuery akan membuat sesuatu untuk responseURL di rilis mendatang.
TIPS : bandingkan saja URL asli dengan responseUrl. Jika sama, maka tidak ada pengalihan yang diberikan. Jika "tidak ditentukan" maka responseUrl mungkin tidak didukung. Namun seperti yang dikatakan Nick Garvey, permintaan AJAX tidak pernah memiliki kesempatan untuk TIDAK mengikuti pengalihan tetapi Anda dapat menyelesaikan sejumlah tugas dengan menggunakan properti responseUrl .
Sementara orang lain yang menjawab pertanyaan ini (sayangnya) benar bahwa informasi ini disembunyikan dari kami oleh browser, saya pikir saya akan memposting solusi yang saya dapatkan:
Saya mengonfigurasi aplikasi server saya untuk menyetel header tanggapan khusus (
X-Response-Url
) yang berisi url yang diminta. Setiap kali kode ajax saya menerima respons, ia memeriksa apakahxhr.getResponseHeader("x-response-url")
sudah ditentukan, dalam hal ini membandingkannya dengan url yang awalnya diminta melalui$.ajax()
. Jika string berbeda, saya tahu ada pengalihan, dan juga, url apa yang sebenarnya kami tuju.Ini memang memiliki kelemahan karena membutuhkan bantuan sisi server, dan juga dapat rusak jika url menjadi diperkecil (karena masalah kutipan / pengkodean dll) selama perjalanan pulang pergi ... tetapi untuk 99% kasus, ini tampaknya mendapatkan pekerjaan selesai.
Di sisi server, kasus khusus saya adalah aplikasi python menggunakan kerangka web Pyramid, dan saya menggunakan cuplikan berikut:
sumber
Anda sekarang dapat menggunakan API pengambilan / Ini kembali
redirected: *boolean*
sumber