2011-01-12 59 views
11

javadoc cho javax.servlet.http.HttpServletResponse hơi mơ hồ về sự khác biệt giữa các quy tắc encodeURLencodeRedirectURL làm theo, có bất kỳ ví dụ nào về những quy tắc chính xác đó không? Khi nào thì đầu ra của encodeURL khác với encodeRedirectURL?Sự khác biệt giữa encodeURL và encodeRedirectURL

Ví dụ cụ thể, tôi đã tạo url chuyển hướng mà tôi sẽ sử dụng với response.sendRedirect(url). Tôi nhận được url đó đã được mã hóa, nhưng tôi muốn thêm một tham số vào nó có giá trị là một url khác:

param2=http://google.com 

Tôi sử dụng hai chức năng nào để mã hóa tính năng này?

Trả lời

5

encodeURL() được sử dụng cho tất cả các URL trong đầu ra của servlet. Nó giúp id phiên được mã hóa bằng URL.

encodeRedirectURL() chỉ được sử dụng với res.sendRedirect. Nó cũng được sử dụng để mã hóa id phiên với URL nhưng chỉ khi chuyển hướng.

+6

Khi đầu ra của encodeURL sẽ khác với encodeRedirectURL? –

10

Salam Alekom Abduallah, Tôi đã tìm và tìm câu trả lời Tôi biết tôi sẽ tìm thấy nó trong stackoverflow hoặc coderanch và ở đó tôi tìm thấy số answer từ Charles Lyons tác giả của cuốn sách trong tay tôi ngay bây giờ. trùng hợp ngẫu nhiên.

gửi 8/9/2008 11:41 Chính xác - sự khác biệt được rằng encodeURL luôn viết ID phiên vào URL (nếu có yêu cầu ví dụ như vì cookie là vô hiệu hóa), trong khi encodeRedirectURL chứa thêm logic để xác định xem có muốn viết ID phiên hay không. Đây là một ý tưởng thực sự tồi tệ khi cung cấp cho ID trang web nước ngoài ID phiên, ví dụ: kể từ đó họ có thể mạo danh phiên của người dùng của bạn. Do đó, encodeRedirectURL sẽ chỉ đặt jsessionid trên URL nếu URL đó nằm trong ứng dụng Web hiện tại và không thực hiện bất kỳ viết lại nếu không.

Charles Lyons (SCJP 1.4, tháng 4 năm 2003; SCJP 5, tháng 12 năm 2006; SCWCD 1.4b, tháng Tư 2004) Tác giả của Companion OCEJWCD Nghiên cứu cho Oracle thi 1Z0-899 (ISBN 0955160340)

cũng tôi tìm thấy answer này quá mà đã được đăng trước đó,

posted 2006/04/19 08:02 Quote Report bài to moderator Hi,

các encodeURL được sử dụng để mã hóa url để theo dõi phiên 012.351.chuyển tiếp và bao gồm cơ chế. EncodeRedirectURL mã hóa các URL được chỉ định để sử dụng trong phương thức sendRedirect.

Sự khác biệt chính giữa hai là, việc thực hiện phương pháp encodeRedirectURL bao gồm logic để xác định xem ID phiên cần được mã hóa trong URL trong trường hợp khi bạn đang chuyển hướng URL với bối cảnh khác nhau, nơi phiên thông tin không bắt buộc hoặc không hợp lệ. Phương thức encodeURL không hỗ trợ id hiển thị nếu cookie được bật.Ngoài việc encodeRedirectURL này không thêm thông tin phiên nếu URL là được chuyển hướng đến ngữ cảnh khác (ứng dụng web). Bởi vì các quy tắc để đưa ra quyết định này có thể khác với quy tắc được sử dụng để quyết định xem có mã hóa liên kết bình thường hay không, phương pháp này được tách ra khỏi phương thức mã hóa .

Hy vọng điều này sẽ giúp bạn.

Cảm ơn

Narendra Dhande

Các vấn đề liên quan