Câu trả lời:
Không theo tiêu chuẩn W3C cho đối tượng XMLHttpRequest (đã thêm phần nhấn mạnh):
Nếu phản hồi là chuyển hướng HTTP:
Nếu nguồn gốc của URL được truyền tải bởi tiêu đề Vị trí có cùng nguồn gốc với nguồn gốc XMLHttpRequest và chuyển hướng không vi phạm các biện pháp phòng ngừa vòng lặp vô hạn, hãy tuân theo chuyển hướng một cách rõ ràng trong khi tuân thủ các quy tắc sự kiện yêu cầu cùng nguồn gốc.
Họ đang xem xét nó cho một bản phát hành trong tương lai:
Thông số kỹ thuật này không bao gồm các tính năng sau đang được xem xét cho phiên bản tương lai của thông số kỹ thuật này:
- Thuộc tính để vô hiệu hóa các chuyển hướng sau;
nhưng đặc điểm kỹ thuật mới nhất không còn đề cập đến điều này.
Mới Fetch API hỗ trợ chế độ khác nhau của xử lý chuyển hướng: follow
, error
, và manual
, nhưng tôi không thể tìm thấy một cách để xem các URL mới hoặc mã trạng thái khi chuyển hướng đã bị hủy. Bạn chỉ có thể dừng chuyển hướng chính nó, và sau đó nó giống như một lỗi (phản hồi trống). Nếu đó là tất cả những gì bạn cần, bạn nên đi. Ngoài ra, bạn nên biết rằng các yêu cầu được thực hiện qua API này vẫn chưa thể hủy được . Bây giờ họ đang ở .
Đối với XMLHttpRequest, bạn có thể HEAD
máy chủ và kiểm tra xem URL đã thay đổi hay chưa:
var http = new XMLHttpRequest();
http.open('HEAD', '/the/url');
http.onreadystatechange = function() {
if (this.readyState === this.DONE) {
console.log(this.responseURL);
}
};
http.send();
Bạn sẽ không nhận được mã trạng thái, nhưng sẽ tìm thấy URL mới mà không cần tải xuống toàn bộ trang từ đó.
OPTIONS
có thể là một lựa chọn tốt hơn, dù sao chỉ hoạt động cho mục đích chung phi vv quản trị đã cấu hình chuyển hướng các trang web toàn / lược đồ, chẳng hạn như HTTP -> HTTPS
Bạn có thể sử dụng thuộc responseURL
tính để lấy đích chuyển hướng hoặc kiểm tra xem cuối cùng phản hồi có được tìm nạp từ vị trí bạn chấp nhận hay không.
Điều này tất nhiên có nghĩa là kết quả vẫn được tìm nạp, nhưng ít nhất bạn có thể nhận được thông tin cần thiết về đích chuyển hướng và ví dụ như phát hiện các điều kiện khi bạn muốn hủy phản hồi.
Không, bạn không có bất kỳ vị trí nào trong API được XMLHttpRequest tiết lộ cho phép bạn ghi đè hành vi mặc định của nó là tự động theo dõi 301 hoặc 302.
Nếu máy khách đang chạy IE trên windows thì bạn có thể sử dụng WinHTTP thay thế để đặt một tùy chọn để ngăn chặn hành vi đó nhưng đó là một giải pháp rất hạn chế.