2010-08-23 32 views
8

Tôi đã sử dụng mã "request.getHeader (" Referer ");" Mã này dường như hoạt động tốt. Nhưng gần đây tôi phát hiện ra rằng nó không hoạt động trong IE. IE đã ném null. Bây giờ tôi không còn biết làm thế nào để đi tiếp. Có cách nào khác cho tiêu đề "Người giới thiệu" có thể nhận liên kết trước đó và hoạt động chính xác trong tất cả các trình duyệt không? Đặt tiêu đề tùy chỉnh từ liên kết trước không phải là tùy chọn khả thi đối với tôi. Vì vậy, ai đó hãy giúp tôi về điều này. Cảm ơn.Thay thế cho tiêu đề "Người giới thiệu"

+2

Thẻ jsp gợi ý rằng bạn đang cố gắng truy cập các tiêu đề trong các tệp jsp. Bạn không nên làm điều đó. Xử lý Java thuộc về một bộ điều khiển, không phải trong một thành phần khung nhìn. –

+0

Vậy thì cách tốt nhất để tiếp cận trong trường hợp này là gì? Tôi cần thêm thời gian đăng nhập cuối cùng của người dùng. –

Trả lời

10

Mục nhập "Giới thiệu" là tùy chọn. Bạn không thể dựa vào nó hiện diện. Không có cách nào để duyệt liên kết trước vì điều này phụ thuộc vào cài đặt người dùng và cấu hình proxy (tức là những gì mà quản trị viên hệ thống cho rằng họ nên cho phép bạn xem).

Bạn phải tìm cách sống mà không có thông tin này.

+0

Nếu vậy, có cách nào để tôi nhận liên kết trước đó trong IE không? –

+4

Tôi không nghĩ đó là đặc trưng của IE. Hầu hết các trình duyệt đều cho phép bạn hủy kích hoạt tiêu đề tham chiếu (r) và nếu bạn nhập url vào thanh vị trí theo cách thủ công, cũng sẽ không có một tham chiếu. Bạn không được phụ thuộc vào thông tin của người giới thiệu. –

7

Không rõ bạn cần gì, nhưng tôi nghi ngờ rằng bạn cần nó để có thể quay lại một số "trang đầu tiên" tại cùng một trang web khi một số hành động kết thúc. Tùy chọn tốt nhất của bạn là sau đó chuyển URI yêu cầu xung quanh dưới dạng tham số yêu cầu. Ví dụ. một liên kết đăng nhập:

<a href="/login?from=${pageContext.request.requestURI}">login</a> 

Trong biểu mẫu đăng nhập, duy trì nó cho yêu cầu tiếp theo là giá trị đầu vào ẩn có dạng:

<input type="hidden" name="from" value="${param.from}"> 

Trong phương thức action login, chỉ cần chuyển hướng đến URL mà sau khi kết thúc hành động.

response.sendRedirect(request.getParameter("from")); 

Nếu đây không phải là những gì bạn đang tìm kiếm, thì bạn nên thực sự giải thích câu hỏi của mình để hỏi cách đạt được yêu cầu chức năng hơn là hỏi cách đạt được giải pháp (sai).

Dựa vào bất kỳ luồng logic kinh doanh nào trên người giới thiệu thực sự là một ý tưởng tồi từ đầu. Bài học về nhà phát triển web đầu tiên của bạn phải là: người dùng cuối có đầy đủ kiểm soát những gì họ gửi cùng với yêu cầu HTTP. Bạn không nên dựa vào tất cả các thông tin đó có mặt, hãy để mình một mình chính xác 100%.

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