Có an toàn khi sử dụng trạng thái HTTP 308 Redirect vĩnh viễn không?


11

Có an toàn không khi sử dụng mã trạng thái HTTP 308 Chuyển hướng vĩnh viễn ( đề xuất ) trong phản hồi của máy chủ? Vấn đề với 301 Moved Pternal là nó chỉ hoạt động với các yêu cầu GET (công bằng: POST sẽ chuyển đổi thành GET mà KHÔNG phải là một tùy chọn).

Mã trạng thái rất mới trong "thời gian RFC", vậy bạn sẽ đề xuất gì?

Trình duyệt sẽ làm gì nếu không biết 308? Nó sẽ tìm vị trí và làm 302?


Mới hơn thậm chí bạn dường như nhận ra; bây giờ là RFC .
Michael Hampton

1
Bạn đã đọc phần Xem xét triển khai ?
Håkan Lindqvist

308 không phải là một tiêu chuẩn - đó là một đề xuất, vẫn đang trong giai đoạn thử nghiệm. Các trình duyệt sẽ quay trở lại mức giải thích 300 về bất kỳ lỗi 301-399 nào mà họ không hiểu cụ thể.
Chris S

1
Theo kịch bản nào bạn muốn nhận được yêu cầu POST được gửi trực tiếp đến một URL lỗi thời?
Skyhawk

1
@Skyhawk: Tôi làm việc với các tính năng ngoại tuyến của Trò chơi html5. Đối với nhận xét hoặc tạo bài đăng mới, url mục tiêu có thể đã thay đổi do sửa đổi chính bài đăng đó ra khỏi danh mục của nó.
burnersk

Câu trả lời:


4

Mặc dù 308 hiện là tiêu chuẩn ( https://tools.ietf.org/html/rfc7538 ), nhưng hiện tại nó không an toàn [Chỉnh sửa] (kể từ ngày 3 tháng 4 năm 2019), đặc biệt đối với các ứng dụng trên máy tính để bàn, nhưng có thể gần như an toàn trong một số ứng dụng các khu vực cụ thể (ví dụ Ấn Độ) hoặc cho các ứng dụng nhắm vào máy tính bảng và thiết bị di động.

Sự thiếu an toàn là do IE 11 trên Windows 7 và 8.1 không hỗ trợ. Trong IE 11, trang web chỉ xuất hiện để treo. May mắn thay, IE đi kèm với Windows 10 không hỗ trợ nó, vì vậy nó sẽ chỉ là một trường hợp chờ đợi cho đến khi di chuyển chung từ Windows 7 (Win 7 chỉ bị Win 10 vượt qua về chỉ số sử dụng toàn cầu, Win 8 là đáng kể ít phổ biến hơn cả hai) [Chỉnh sửa] hoặc công ty của bạn đưa ra quyết định không còn hỗ trợ nó nữa (mà bạn có thể đưa ra một trường hợp rất mạnh mẽ từ ngày 14 tháng 1 năm 2020 khi Windows 7 thậm chí mất hỗ trợ dài hạn ).

Tất cả các trình duyệt hiện đại khác đều hỗ trợ nó (Chrome, Firefox, Safari, Edge, Opera).

[Chỉnh sửa] Số liệu thống kê sử dụng từ tháng 3 năm 2019 để giúp đưa ra quyết định của bạn:

  • 36,52% người dùng máy tính để bàn vẫn còn trên Windows 7
  • 9,83% người dùng máy tính để bàn là trên IE; vì Win10 đã đẩy Edge rất nhiều, tôi cho rằng hầu hết những người dùng này sẽ tham gia Win 7. Ref netmarketshare

Vì vậy, quyết định sử dụng 308 sẽ ảnh hưởng đến khả năng (dự đoán của tôi dựa trên các số liệu thống kê ở trên) giữa 5 và 9% người dùng máy tính để bàn trong lần chỉnh sửa này (3/4/2019). Nếu ứng dụng của bạn hướng nhiều hơn vào máy tính bảng / thiết bị di động, giá trị này sẽ thấp hơn đáng kể. Tương tự nếu ứng dụng của bạn dành riêng cho thị trường Ấn Độ.

Bạn có thể kiểm tra xem trình duyệt của bạn có hỗ trợ chuyển hướng 308 tại đây không: https://webdbg.com/test/308/


Lưu ý rằng điều này khác với 307. IE 11 trên Windows 7 hỗ trợ HTTP 307 mà không gặp sự cố. (Tại sao?)
Franklin Yu

7

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/308

Đề xuất RFC 7538 có hỗ trợ rộng rãi ngày hôm nay. Nó an toàn.

308 thay vì 301. 307 thay vì 302.

di chuyển! = chuyển hướng

Di chuyển nhắc nhở một địa chỉ cụ thể và / hoặc tập tin được di chuyển. Redirect là một địa điểm hoặc địa chỉ mới.


1
Đến bây giờ (20 tháng 2 năm 2018) vẫn chưa an toàn do số người trên Windows 7 sử dụng IE 11 vẫn không hỗ trợ điều này.
monty

@monty con số đó là gì? bây giờ là gì
Robin Winslow

Tính đến tháng 3 năm 2019, 36,52% người dùng máy tính để bàn vẫn sử dụng Windows 7 và 9,83% người dùng máy tính để bàn đã sử dụng IE.
monty

2

Để kết thúc điều này: Không an toàn khi sử dụng mã trạng thái đó. Xem ý kiến ​​để biết chi tiết.

308 không phải là một tiêu chuẩn - đó là một đề xuất, vẫn đang trong giai đoạn thử nghiệm. Các trình duyệt sẽ quay trở lại mức giải thích 300 về bất kỳ lỗi 301-399 nào mà họ không hiểu cụ thể.

Một số trình duyệt chỉ thất bại hoàn toàn trên mã trạng thái đó.


1
Câu trả lời này đã hết hạn. Tôi tin rằng RFC đã và được chấp nhận có sẵn để sử dụng trên các trình duyệt hiện đại developer.mozilla.org/en-US/docs/Web/HTTP/Status/308 . Tuy nhiên, nếu bạn cần hỗ trợ từ các trình duyệt cũ hơn, đây vẫn có thể là một vấn đề!
Yahya Uddin

3
Nó không hoạt động trong IE11 trên Win8.1 trở xuống (nó hoạt động trên Win10).
Bart Verkoeijen

tools.ietf.org/html/rfc7538 "Mã trạng thái giao thức truyền siêu văn bản 308 (Chuyển hướng vĩnh viễn)" được xuất bản vào tháng 4 năm 2015.
Patrick Mevzek
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.