"Cảm ơn đã đăng bài viết. Xin vui lòng chờ trong khi bạn được chuyển hướng. Cần thiết?


11

Cảm ơn đã đăng bài viết. Hãy đứng chờ trong khi bạn được chuyển hướng.

Nếu bạn không tự động chuyển hướng, xin vui lòng bấm vào đây.

Có lẽ bạn đã quen thuộc với những tin nhắn như thế này, đặc biệt là khi sử dụng web vào những năm 90 hoặc đầu những năm 2000. Trong các dự án của riêng tôi, tôi chưa bao giờ tìm thấy lý do để khiến người dùng chờ trong 2-3 giây trong khi họ được chuyển hướng sau khi đăng ký hoặc đăng một cái gì đó, ví dụ. Nhưng mô hình này xuất hiện mọi lúc, ngay cả trong các phần mềm web phổ biến như PHPBB.

Câu hỏi của tôi là, liệu chuyển hướng vẫn có một vị trí / nhu cầu trong phát triển web (aj Wax) hiện đại? Có bất kỳ tình huống nào hoàn toàn yêu cầu chuyển hướng như thế này, cuối cùng gây khó chịu cho người dùng, và lý do kỹ thuật đằng sau chúng là gì? Tại sao không chỉ chuyển hướng ngay lập tức nếu cần chuyển hướng?


Chỉ cần đoán: có thể bằng cách nào đó có liên quan đến việc ngăn chặn các hành động hoặc bot theo kịch bản? Có nhiều phương pháp tốt hơn để làm điều đó, mặc dù (Captchas, v.v.).

Do yêu cầu của người dùng, tôi đã thay đổi cài đặt PHPBB để chuyển hướng ngay lập tức. Chỉ mất một vài thay đổi dòng và hoạt động hoàn hảo.
André Paramés

@Martin: có thể, nhưng nếu vậy thì nó hoàn toàn sai lầm, vì bất kỳ bot nào cũng có thể đi theo chuyển hướng như bất kỳ trình duyệt nào (đặc biệt là nếu có tiêu đề Vị trí, như trong PHPBB).
André Paramés

Câu trả lời:


3

Có bất kỳ tình huống nào hoàn toàn yêu cầu chuyển hướng như thế này, cuối cùng gây khó chịu cho người dùng, và lý do kỹ thuật đằng sau chúng là gì?

Mục đích phổ biến nhất (thường là trong trường hợp yêu cầu tạo bản ghi mới trong cơ sở dữ liệu, xử lý giao dịch thanh toán, v.v.) là ngăn chặn các yêu cầu trùng lặp nếu người dùng nhấn nút "Làm mới" và đăng lại yêu cầu.

Liệu chuyển hướng vẫn có một vị trí / nhu cầu trong phát triển web (aj Wax) hiện đại?

Nếu bạn có thể thoát khỏi việc thông báo cho người dùng đã tắt Javascript rằng các yêu cầu của họ sẽ bị bỏ qua hoặc có thể bị xử lý sai (thông báo "Đừng nhấp gửi nhiều lần!" ) - nhưng đó không phải là một nỗ lực lớn để hỗ trợ những điều kỳ quặc đó Người dùng bị vô hiệu hóa JS và đảm bảo rằng bộ phận thanh toán không thấy khiếu nại thanh toán đôi khi, do đó việc chuyển hướng một số loại vẫn được triển khai trong nhiều giao diện.

Tại sao không chuyển hướng ngay lập tức nếu cần chuyển hướng?

Chuyển hướng phải được ban hành ngay lập tức nếu mục tiêu là ngăn chặn nhiều lần gửi biểu mẫu - trong trường hợp chuyển hướng theo thời gian có lẽ chúng đang hướng đến các máy chủ chậm chạp, chúng đã thất bại trong việc khóa khóa dựa trên phiên hoặc chúng đang cố gắng giải quyết một vấn đề bí truyền hơn.


"là ngăn chặn các yêu cầu trùng lặp" --- chuyển hướng vị trí im lặng cũng làm điều đó. "Chuyển hướng nên được ban hành ngay lập tức nếu mục tiêu là ngăn chặn nhiều lần gửi biểu mẫu" --- không nên, vì F5trên Stand bytrang cũng sẽ gây ra việc gửi lại bài đăng.
zerkms

@zerkms - Tôi đang đề xuất chuyển hướng đến một vị trí mới trước khi cơ quan phản hồi được gửi (tức là không có trang "chờ")
danlefree

5

Trước hết, không phải tất cả các trình duyệt sẽ chuyển hướng khi được cung cấp tiêu đề Vị trí. Thứ hai, không phải tất cả các trình duyệt sẽ chuyển hướng với Javascript vì nó bị vô hiệu hóa. Thứ ba, không phải tất cả các trình duyệt sẽ hỗ trợ các thẻ meta-refresh. Bất kỳ trường hợp nào trong số này có lẽ rất hiếm nên có lẽ sẽ không có vấn đề gì. Nhưng ngay cả khi nó có, bạn có thể chồng chéo tất cả các phương pháp tôi nghĩ.

Cách các trang PHPBB thực hiện nó (chờ trong 5 giây hoặc một cái gì đó) hoàn toàn không cần thiết. Nó sẽ chuyển hướng ngay lập tức và nếu không, nó sẽ hiển thị trang HTML (có meta-refresh và Javascript trên đó và văn bản có liên kết) sau khi gửi các tiêu đề. Hầu như không có cơ hội trang này sẽ thực sự được hiển thị bởi một trình duyệt thông thường nếu nó được lập trình đúng.


"Trước hết, không phải tất cả các trình duyệt sẽ chuyển hướng khi được cung cấp tiêu đề Vị trí" [cần dẫn nguồn]
Jon Cram

@Jon Cram: proxy web kỹ thuật và tiện ích mở rộng có thể can thiệp vào tiêu đề vị trí. Trình duyệt cũng có thể là một tác nhân người dùng không chuẩn và chủ sở hữu trang web đang cố gắng ngăn cản họ theo các liên kết ngoại vi bằng cách trình bày một cái gì đó mà người dùng có thể dễ dàng theo dõi.
Brian Lyttle

Tôi có đọc chính xác cho bạn khi gọi header()chức năng của PHP thực sự có thể bị bỏ qua không? Điều này làm tôi lo lắng rất nhiều. Tôi đã biết về các phương thức chuyển hướng HTML và JS và cách chúng kém tin cậy hơn, nhưng tôi chưa bao giờ thực sự nghĩ rằng một tiêu đề HTTP được gửi phía máy chủ thực sự có thể bị bỏ qua.
Lotus Notes

1
@Lotus Nhiều người không gửi tiêu đề chính xác, đó là vấn đề lớn hơn. Bạn phải bao gồm mã 3xx trước mã mà nhiều người không làm. Một trình duyệt có thể bỏ qua yêu cầu này nếu muốn (và tôi chắc chắn một số khách hàng thực hiện; không phải trình duyệt chính)
Joe Phillips

Cũng lưu ý rằng tiêu đề Vị trí được cho là gửi một URL tuyệt đối , tuy nhiên điều này thường bị bỏ qua.
Piskvor rời khỏi tòa nhà

3

Tôi luôn gửi chuyển hướng trong tiêu đề phản hồi với mã trạng thái HTTP thích hợp (ví dụ: 301 hoặc 302 - xem http://www.w3.org/Prot Protocol / rfc2616 / rfc2616- sec10.html ), dẫn đến chuyển hướng ngay lập tức. Tôi không biết bất kỳ lý do kỹ thuật tốt nào tại sao ai đó sẽ hiển thị "vui lòng đợi trong khi bạn được chuyển hướng trang".


1

Lý do chính để làm điều này là một bản ghi được tạo trên trang web mà bạn đã được chuyển hướng. Trang có thể tải Google Analytics, nhưng dữ liệu cũng sẽ có trong nhật ký web.

Nếu bạn gửi chuyển hướng bằng tiêu đề HTTP thì trình duyệt sẽ chuyển sang trang khác mà không thực hiện bất kỳ yêu cầu bổ sung nào cho trang gốc. Theo dõi dựa trên Javascript có thể bắt được những lối thoát này, nhưng nó mang lại cho chủ sở hữu trang web những cơ hội tốt hơn để theo dõi.

Trong một số trường hợp, bạn cũng có thể muốn cung cấp từ chối trách nhiệm cho người dùng hơn là họ đang được chuyển hướng. Điều này đặc biệt quan trọng đối với các quản trị web làm việc trong các ngành quy định. Nếu bạn không làm việc trong một ngành được quy định như ngân hàng hoặc dược phẩm, bạn sẽ không đánh giá cao những yêu cầu này.


Vì vậy, tóm lại, mẫu này chỉ cần thiết nếu bạn cần theo dõi hành động của người dùng trên trang web?
Lotus Notes

0

Nó cũng cho phép nút quay lại để sắp xếp công việc đúng cách.

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.