Chính xác thì HTTP / 1.1 302 có nghĩa là gì?


120

Một số bài báo tôi đã đọc từng nói rằng nó có nghĩa là nhảy (từ URI này sang URI khác), nhưng tôi đã phát hiện ra "302" này ngay cả khi thực sự không có bước nhảy nào cả!


1
Có thể có một số thông tin tốt về điều này ở đây trong tài liệu wc3.org .
Copas

2
Hãy chú ý: example.com example.comexample.com khác biệt về mặt logic và một trang web muốn được truy cập qua một URL duy nhất có thể chuyển hướng từ trang này sang URL khác để đạt được điều này. Tất nhiên, chuyển hướng 302 là một lựa chọn tồi cho điều này ... nhưng bạn cũng có thể đã thấy các biến thể tinh vi tương tự.
Shog9

Tham khảo trang web này ( hostingpill.com/http-302-error )
virusarthak

Câu trả lời:


74

Chuyển hướng 302 có nghĩa là trang đã được di chuyển tạm thời, trong khi chuyển hướng 301 có nghĩa là trang đã được di chuyển vĩnh viễn.

301 là tốt cho giá trị SEO, trong khi 302 không phải vì 301 hướng dẫn khách hàng quên giá trị của URL gốc, trong khi 302 giữ giá trị của URL gốc và do đó có thể làm giảm giá trị bằng cách tạo hai URL riêng biệt về mặt logic mỗi nội dung đều tạo ra cùng một nội dung (các công cụ tìm kiếm coi chúng là các bản sao riêng biệt thay vì một tài nguyên duy nhất có hai tên).


58

Câu hỏi này đã được đặt ra từ lâu, trong khi RFC 2616 vẫn còn quanh quẩn. Một số câu trả lời cho câu hỏi này dựa trên tài liệu như vậy, ngày nay không còn phù hợp nữa. Trích dẫn Mark Nottingham , người, tại thời điểm viết bài, đồng chủ trì Nhóm công tác IETF HTTP và QUIC:

Không sử dụng RFC2616 . Xóa nó khỏi ổ cứng, dấu trang và ghi (hoặc tái chế một cách có trách nhiệm) bất kỳ bản sao nào được in ra.

RFC 2616 cũ đã được thay thế bởi các tài liệu sau đây, cùng nhau, xác định giao thức HTTP / 1.1:

Vì vậy, tôi mong muốn đưa ra câu trả lời dựa trên RFC 7231 là tham chiếu hiện tại cho mã trạng thái HTTP / 1.1.

Các 302mã trạng thái

Phản hồi với 302là một cách phổ biến để thực hiện chuyển hướng URL. Cùng với 302mã trạng thái, phản hồi phải bao gồm một Locationtiêu đề với một URI khác. Tiêu đề này sẽ được tác nhân người dùng phân tích cú pháp và sau đó thực hiện chuyển hướng:


Ví dụ về chuyển hướng


Trình duyệt web có thể thay đổi từ POSTsang GETtrong yêu cầu tiếp theo. Nếu hành vi này là không mong muốn, 307mã trạng thái (Chuyển hướng tạm thời) có thể được sử dụng để thay thế.

Đây là cách 302mã trạng thái được xác định trong RFC 7231 :

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.

Máy chủ NÊN tạo Locationtrường tiêu đề trong phản hồi có chứa tham chiếu URI cho URI khác. Tác nhân người dùng CÓ THỂ sử dụng Locationgiá trị trường để chuyển hướng tự động. Trọng tải phản hồi của máy chủ thường chứa một ghi chú siêu văn bản ngắn với một siêu liên kết đến (các) URI khác nhau.

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ừ POSTthành GETcho yêu cầu tiếp theo. Nếu hành vi này là không mong muốn, 307mã trạng thái (Chuyển hướng tạm thời) có thể được sử dụng để thay thế.

Theo tài liệu web MDN từ Mozilla , một trường hợp sử dụng điển hình 302là:

Trang Web tạm thời không hoạt động vì những lý do không thể lường trước được. Bằng cách đó, các công cụ tìm kiếm không cập nhật liên kết của họ.

Các mã trạng thái khác để chuyển hướng

Các RFC 7231 định nghĩa các mã trạng thái sau đây để chuyển hướng:

  • 301 (Đã di chuyển vĩnh viễn)
  • 302 (Tìm)
  • 307 (Chuyển hướng tạm thời)

Các RFC 7238 được tạo ra để xác định một mã trạng thái để chuyển hướng:

  • 308 (Chuyển hướng vĩnh viễn)

Tham khảo câu trả lời này để biết thêm chi tiết.


2
Vâng, nỗi đau của tôi trong hai ngày đã qua đối với bạn ( Locationtiêu đề là thứ đã giúp tôi). Hóa ra tôi đang gọi một dịch vụ httpvà họ đã chuyển đến https, tất cả những gì tôi nhận được là 302, ngay khi tôi đọc Locationtiêu đề ở đây, tôi đã thấy sự http/httpskhác biệt. Cảm ơn bạn!
Eugene

Tôi có cùng một lý do về lỗi này. Javascript của tôi đã trỏ đến vị trí https sai và do đó, chuyển hướng không thành công. Cảm ơn bạn đã bình luận.
Tối đa

25

Một cách đơn giản để xem xét chuyển hướng HTTP 301 so với 302 là:

Giả sử bạn có dấu trang cho " http://sample.com/sample ". Bạn sử dụng trình duyệt để đến đó.

Chuyển hướng 302 đến một URL khác tại thời điểm này có nghĩa là bạn nên giữ dấu trang của mình cho " http://sample.com/sample ". Điều này là do URL đích có thể thay đổi trong tương lai.

Chuyển hướng 301 đến một URL khác có nghĩa là dấu trang của bạn sẽ thay đổi để trỏ đến URL mới vì đây là chuyển hướng vĩnh viễn.


9

Từ RFC 2616 (Đặc tả giao thức truyền siêu văn bản) :

10.3.3 302 Tìm thấy

   Tài nguyên được yêu cầu tạm thời nằm trong một URI khác.
   Vì đôi khi chuyển hướng có thể bị thay đổi, khách hàng NÊN
   tiếp tục sử dụng Request-URI cho các yêu cầu trong tương lai. Phản hồi này
   chỉ có thể lưu vào bộ nhớ cache nếu được biểu thị bằng tiêu đề Cache-Control hoặc Expires
   cánh đồng.

   URI tạm thời NÊN được cung cấp bởi trường Vị trí trong
   phản ứng. Trừ khi phương thức yêu cầu là HEAD, thực thể của
   phản hồi NÊN chứa một ghi chú siêu văn bản ngắn với siêu liên kết tới
   (các) URI mới.

Nguồn:

http://www.ietf.org/rfc/rfc2616.txt


6

Từ Wikipedia :

Mã trạng thái phản hồi HTTP 302 Tìm thấy là cách phổ biến nhất để thực hiện chuyển hướng. Đó là một ví dụ về việc thực hành công nghiệp mâu thuẫn với tiêu chuẩn.



5

302 là một phản hồi cho biết sự thay đổi của vị trí tài nguyên - "Đã tìm thấy".

Url nơi đặt tài nguyên bây giờ phải nằm trong tiêu đề phản hồi 'Vị trí'.

"Bước nhảy" phải được thực hiện bởi ứng dụng khách yêu cầu (thực hiện một yêu cầu mới đối với url tài nguyên trong trường tiêu đề Vị trí phản hồi).


5

Về mặt SEO, cả 301 và 302 đều tốt, tùy thuộc vào tình hình,

Nếu chỉ có một phiên bản có thể được trả lại (tức là phiên bản khác chuyển hướng đến nó), điều đó thật tuyệt! Hành vi này có lợi vì nó làm giảm nội dung trùng lặp. Trong trường hợp cụ thể là chuyển hướng đến các URL có dấu gạch chéo, kết quả tìm kiếm của chúng tôi có thể sẽ hiển thị phiên bản của URL có mã phản hồi 200 (thường là URL có dấu gạch chéo) - bất kể chuyển hướng đó là 301 hay 302.


3

Mã HTTP 302 dành cho chuyển hướng, hãy xem http://en.wikipedia.org/wiki/HTTP_302 .

Nó cho người duyệt đang đọc một trang để đi đến một nơi khác và tải một trang khác. Cách sử dụng của nó rất phổ biến.


1

Theo RFC 1945 / Giao thức truyền siêu văn bản - HTTP / 1.0 :

   302 Moved Temporarily

   The requested resource resides temporarily under a different URL.
   Since the redirection may be altered on occasion, the client should
   continue to use the Request-URI for future requests.

   The URL must be given by the Location field in the response. Unless
   it was a HEAD request, the Entity-Body of the response should
   contain a short note with a hyperlink to the new URI(s).

   If the 302 status code is received in response to a request using
   the POST method, the user agent must not automatically redirect the
   request unless it can be confirmed by the user, since this might
   change the conditions under which the request was issued.

       Note: When automatically redirecting a POST request after
       receiving a 302 status code, some existing user agents will
       erroneously change it into a GET request.

0
  • Mã 302 cho biết chuyển hướng tạm thời .
  • Một trong những tính năng đáng chú ý nhất để phân biệt nó với chuyển hướng 301 là trong trường hợp chuyển hướng 302, sức mạnh của SEO không được chuyển sang một URL mới.
  • Điều này là do sự chuyển hướng này đã được thiết kế để sử dụng khi có nhu cầu chuyển hướng nội dung đến một trang không phải là trang cuối cùng. Do đó, một khi chuyển hướng bị loại bỏ, trang gốc sẽ không bị mất vị trí trong công cụ tìm kiếm của Google.

VÍ DỤ: - Mặc dù việc chúng tôi thấy mình cần chuyển hướng 302 không phổ biến lắm, nhưng tùy chọn này có thể rất hữu ích trong một số trường hợp. Đây là những trường hợp thường xuyên nhất:

  • Khi chúng tôi nhận ra rằng có một số nội dung không phù hợp trên một trang. Trong khi chúng tôi giải quyết vấn đề, chúng tôi có thể chuyển hướng người dùng đến một trang khác có thể được quan tâm.
  • Trong trường hợp một cuộc tấn công vào trang web của chúng tôi yêu cầu khôi phục bất kỳ trang nào, chuyển hướng này có thể giúp chúng tôi giảm thiểu rủi ro.

Chuyển hướng 302 là mã cho khách truy cập vào một URL cụ thể biết rằng trang đã được chuyển tạm thời, hướng họ trực tiếp đến vị trí mới.

  • Nói cách khác, chuyển hướng 302 được kích hoạt khi rô bốt của Google hoặc các công cụ tìm kiếm khác yêu cầu tải một trang cụ thể. Tại thời điểm đó, nhờ sự chuyển hướng này, máy chủ trả về một phản hồi tự động cho biết một URL mới.

  • Bằng cách này, các công cụ tìm kiếm và người dùng đều tránh được các lỗi và phiền toái, đảm bảo điều hướng trơn tru.

Để biết thêm chi tiết, hãy tham khảo bài viết này .


0

Mã trạng thái 302 là mã trạng thái phản hồi HTTP cho biết rằng tài nguyên được yêu cầu đã tạm thời được chuyển sang một URI khác. Vì vị trí hoặc chỉ thị chuyển hướng hiện tại có thể bị thay đổi trong tương lai, ứng dụng khách nhận được mã phản hồi 302 Found sẽ tiếp tục sử dụng URI ban đầu cho các yêu cầu trong tương lai.

Phản hồi HTTP với mã trạng thái này sẽ cung cấp thêm một URL trong trường tiêu đề Vị trí. Đây là lời mời tác nhân người dùng (ví dụ: trình duyệt web) thực hiện yêu cầu thứ hai, nếu không, giống hệt, đến URL mới được chỉ định trong trường vị trí. Kết quả cuối cùng là chuyển hướng đến URL mới.


0

Đối với bất kỳ ai có thể tò mò về cách đặt tên, tôi chỉ nói thêm rằng nó có thể được gọi là "Đã tìm thấy" vì tài nguyên chính (ví dụ: một trang web riêng tư) mà người dùng định nhận không có sẵn tại thời điểm đó (ví dụ: người dùng chưa chứng minh được danh tính của họ), vì vậy thay vào đó máy chủ đã tìm thấy một tài nguyên mới mà người dùng có thể nhận được (là trang đăng nhập trong trường hợp sử dụng phổ biến nhất).

Ngoài ra, nó "bị mất và được tìm thấy" theo kiểu trốn tìm, nghĩa là tài nguyên bị mất ở trạng thái 302 chỉ bị mất tạm thời , nó không được cho là mất mãi mãi (trừ khi người chơi có ý đồ xấu;)).

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.