Điều gì sẽ xảy ra nếu trình duyệt nhận được phản hồi chuyển hướng tới yêu cầu ajax?Trả lại chuyển hướng khi phản hồi yêu cầu XHR
Trả lời
Điều gì sẽ xảy ra nếu trình duyệt nhận được phản hồi chuyển hướng tới yêu cầu ajax?
Nếu máy chủ gửi chuyển hướng (còn gọi là phản hồi 302 cùng với tiêu đề Vị trí:) thì chuyển hướng sẽ tự động được theo sau bởi trình duyệt. Phản hồi yêu cầu giây thứ hai (giả sử nó cũng không phải là một chuyển hướng khác) là những gì được tiếp xúc với chương trình của bạn.
Thực tế, bạn không có khả năng phát hiện xem có phản hồi 302 đã xảy ra hay không. Nếu chuyển hướng 302 dẫn đến 200, thì chương trình của bạn hoạt động giống như yêu cầu ban đầu đã dẫn trực tiếp đến 200.
Đây là cả hai kinh nghiệm của tôi và behavior called out in the spec.
2016 Cập nhật: Thời gian đã trôi qua và tin tốt là fetch() API mới được cung cấp để cung cấp finer-grained control of how redirects are handled, với hành vi mặc định tương tự như XHR. Điều đó nói rằng, nó chỉ hoạt động khi fetch() được thực hiện natively. Polyfill versions of fetch() —đó dựa trên XHR— continue to have XHR's limitations. May mắn thay, native browser support dường như được làm tròn ra độc đáo.
ajax-request
sẽ theo sau chuyển hướng đó. Nội dung thực tế (.responseText
, .responseXML
) sẽ là nội dung từ trang bạn được chuyển hướng đến.
Bạn có thể chặn chuyển hướng (status-code
, location-header
) trên readyState
2 hoặc 3, nhưng không chắc chắn về điều đó.
Không, tất cả các trạng thái đó đều mang cùng trạng thái giống nhau. Ngay cả giá trị của 'getAllResponseHeaders()' là bằng nhau. – sebastianwagner
Điều thú vị là tôi đã đến đây vì tôi đang gặp phải tình huống chuyển hướng dường như không bị theo dõi ... điều này xảy ra khi chuyển hướng vi phạm chính sách gốc. – Gus
@Gus có lẽ là hợp lý – Dmitry
Điều gì sẽ xảy ra nếu chuyển hướng dẫn đến 401 thay vì 200? Tôi dường như đang chạy vào vấn đề đó và nhận được lỗi với jQuery, vì vậy tôi đang cố gắng tìm ra chính xác những gì brower/JS là nghĩa vụ phải làm. –