Redirect () so với RedirectPermanent () trong ASP.NET MVC


80

Sự khác biệt giữa Redirect()RedirectPermanent(). Tôi đã đọc một số bài báo, nhưng tôi không hiểu khi nào chúng ta phải sử dụng Redirect()RedirectPermanent(). Bạn có thể hiển thị một phần của ví dụ.

Câu trả lời:


146

Sự khác biệt cơ bản giữa cả hai là RedirectPermanentgửi cho trình duyệt một HTTP 301mã trạng thái (Đã chuyển vĩnh viễn) trong khi Redirectsẽ gửi một HTTP 302mã trạng thái.

Sử dụng RedirectPermanentnếu tài nguyên đã được di chuyển vĩnh viễn và sẽ không thể truy cập được ở vị trí trước đó nữa. Hầu hết các trình duyệt sẽ lưu vào bộ nhớ cache phản hồi này và thực hiện chuyển hướng tự động mà không yêu cầu lại tài nguyên ban đầu.

Sử dụng Redirectnếu tài nguyên có thể có sẵn ở cùng một vị trí (URL) trong tương lai.

Thí dụ

Giả sử rằng bạn có người dùng trong hệ thống của mình. Bạn cũng có một tùy chọn để xóa người dùng hiện có. Trang web của bạn có một tài nguyên /user/{userid}hiển thị thông tin chi tiết của một người dùng nhất định. Nếu người dùng đã bị xóa, bạn phải chuyển hướng đến /user/does-not-existtrang. Trong trường hợp này:

Nếu người dùng sẽ không bao giờ được khôi phục nữa, bạn nên sử dụng RedirectPermanentđể trình duyệt có thể truy cập trực tiếp /user/does-not-existtrong các yêu cầu tiếp theo ngay cả khi URL trỏ đến /user/{userid}.

Nếu người dùng có thể được khôi phục trong tương lai, bạn nên sử dụng một phiên bản thường xuyên Redirect.



6
Lưu ý rằng điều này RedirectPermanentcó thể gây khó chịu trong khi gỡ lỗi vì lần thứ hai bạn nhấp vào, hành động của bộ điều khiển sẽ bị bỏ qua và không đạt được điểm ngắt trong chức năng ban đầu nếu nó chuyển hướng sang nơi khác. Đó là trừ khi bạn làm trống bộ nhớ cache của mình trước mỗi lần nhấp.
Antoine Pelletier

Nếu bạn đã từng mắc lỗi sử dụng sai chuyển hướng vĩnh viễn, có cách nào để thông báo điều đó với một trình duyệt đã truy cập và nhận được chuyển hướng vĩnh viễn không?
Eaglei 22

17

RedirectPermanentlà 301 và Redirectlà mã trạng thái 302


12
Để tham khảo, Trình duyệt có thể nhớ 301 và không bao giờ nhấn lại URL ban đầu nếu họ muốn, trong khi 302 chỉ ra rằng họ nên kiểm tra lại mỗi lần nếu chuyển hướng vẫn còn ở đó. Tất nhiên, việc triển khai thực tế có thể khác nhau, nhưng đó là mục đích đằng sau 301 và 302
Michael Stum

1

Họ gửi các mã phản hồi khác nhau đến trình duyệt. 301 là chuyển hướng vĩnh viễn, 302 là chuyển hướng tạm thời. Hiệu quả cuối cùng là giống nhau, nhưng nếu khách hàng muốn lập chỉ mục các liên kết (ứng dụng khách phổ biến nhất làm điều này sẽ là các công cụ tìm kiếm) thì chuyển hướng vĩnh viễn yêu cầu khách hàng cập nhật hồ sơ của mình để bỏ qua liên kết cũ và bắt đầu sử dụng liên kết mới . Chuyển hướng tạm thời cho khách hàng biết rằng trang đang chuyển hướng ngay bây giờ, nhưng không được xóa liên kết cũ khỏi cơ sở dữ liệu lập chỉ mục của nó

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.