Tổng quan về 301
, 302
và307
Các RFC 7231 , các tài liệu tham khảo hiện hành đối với ngữ nghĩa và nội dung của giao thức HTTP 1.1 /, định nghĩa 301
(Moved Permanently) và 302
mã trạng thái (Found), cho phép các phương thức yêu cầu phải được thay đổi từ POST
tới GET
. Đặc tả này cũng xác định 307
mã trạng thái (Chuyển hướng tạm thời) không cho phép phương thức yêu cầu được thay đổi từ POST
thành GET
.
Xem thêm chi tiết bên dưới:
6.4.2. 301 Đã di chuyển vĩnh viễn
Các 301
(Moved Permanently) mã trạng thái chỉ ra rằng tài nguyên mục tiêu đã được chỉ định một vĩnh viễn URI mới và bất kỳ tài liệu tham khảo trong tương lai để cập khu vực này phải sử dụng một trong các URI kèm theo. [...]
Lưu ý: Vì lý do lịch sử, tác nhân người dùng CÓ THỂ thay đổi phương thức yêu cầu từ POST
thành GET
cho yêu cầu tiếp theo. Nếu hành vi này là không mong muốn, 307
mã trạng thái (Chuyển hướng tạm thời) có thể được sử dụng để thay thế.
6.4.3. 302 Tìm thấy
Các 302
(Found) mã trạng thái chỉ ra rằng tài nguyên mục tiêu tạm thời nằm dưới một URI khác nhau. Vì đôi khi chuyển hướng có thể bị thay đổi, nên khách hàng phải tiếp tục sử dụng URI yêu cầu hiệu quả cho các yêu cầu trong tương lai. [...]
Lưu ý: Vì lý do lịch sử, tác nhân người dùng CÓ THỂ thay đổi phương thức yêu cầu từ POST
thành GET
cho yêu cầu tiếp theo. Nếu hành vi này là không mong muốn, 307
mã trạng thái (Chuyển hướng tạm thời) có thể được sử dụng để thay thế.
6.4.7. 307 Chuyển hướng tạm thời
Các 307
(Temporary Redirect) mã trạng thái chỉ ra rằng cư trú tài nguyên mục tiêu tạm thời dưới một URI khác nhau và user agent PHẢI KHÔNG thay đổi phương thức yêu cầu nếu nó thực hiện một chuyển hướng tự động để mà URI. Vì chuyển hướng có thể thay đổi theo thời gian, nên khách hàng phải tiếp tục sử dụng URI yêu cầu có hiệu lực ban đầu cho các yêu cầu trong tương lai. [...]
Lưu ý: Mã trạng thái này tương tự như 302
(Đã tìm thấy), ngoại trừ việc nó không cho phép thay đổi phương thức yêu cầu từ POST
thành GET
. Đặc điểm kỹ thuật này xác định không có đối tác tương đương nào cho 301
(Đã chuyển vĩnh viễn) ( RFC 7238 , tuy nhiên, xác định mã trạng thái 308
(Chuyển hướng vĩnh viễn) cho mục đích này).
Nhu cầu về 308
Các RFC 7238 đã được tạo ra để xác định 308
(Permanent Redirect) mã trạng thái, đó là tương tự như 301
(Moved Permanently) nhưng không cho phép phương thức yêu cầu phải được thay đổi từ POST
tới GET
.
Các 308
mã trạng thái hiện nay được xác định bởi RFC 7538 (nghĩa lỗi thời các RFC 7238 ).
3. 308 Chuyển hướng vĩnh viễn
Các 308
(Permanent Redirect) mã trạng thái chỉ ra rằng tài nguyên mục tiêu đã được chỉ định một vĩnh viễn URI mới và bất kỳ tài liệu tham khảo trong tương lai để cập khu vực này phải sử dụng một trong các URI kèm theo. Khách hàng có khả năng chỉnh sửa liên kết phải tự động liên kết lại các tham chiếu đến URI yêu cầu hiệu quả với một hoặc nhiều tham chiếu mới do máy chủ gửi, nếu có thể. [...]
Lưu ý: Mã trạng thái này tương tự như 301
(Đã chuyển vĩnh viễn), ngoại trừ việc nó không cho phép thay đổi phương thức yêu cầu từ
POST
sang GET
.
Chúng tôi có những điều sau đây:
+-----------+-----------+
| Permanent | Temporary |
+------------------------------------------------------------+-----------+-----------+
| Allows changing the request method from POST to GET | 301 | 302 |
+------------------------------------------------------------+-----------+-----------+
| Doesn't allow changing the request method from POST to GET | 308 | 307 |
+------------------------------------------------------------+-----------+-----------+
Chọn mã trạng thái phù hợp nhất
Michael Kropat đã tập hợp các biểu đồ quyết định giúp xác định mã trạng thái tốt nhất cho từng tình huống. Xem mã trạng thái 2xx
và 3xx
mã sau: