Câu trả lời:
Nó có sẵn trong tiêu đề HTTPreferer
. Bạn có thể lấy nó trong một servlet như sau:
String referrer = request.getHeader("referer"); // Yes, with the legendary misspelling.
Tuy nhiên, bạn cần nhận ra rằng đây là giá trị do khách hàng kiểm soát và do đó có thể bị giả mạo thành một thứ hoàn toàn khác hoặc thậm chí bị xóa. Do đó, bất kỳ giá trị nào nó trả về, bạn không nên sử dụng nó cho bất kỳ quy trình kinh doanh quan trọng nào trong phần phụ trợ, mà chỉ để kiểm soát bản trình bày (ví dụ: ẩn / hiển thị / thay đổi một số phần bố cục thuần túy) và / hoặc thống kê.
Đối với người quan tâm, nền tảng về lỗi chính tả có thể được tìm thấy trong Wikipedia .
null
.
Trên thực tế, đó là :
request.getHeader("Referer")
, hoặc thậm chí tốt hơn, và để chắc chắn 100%
request.getHeader(HttpHeaders.REFERER)
, trong đó, httpHeaders làcom.google.common.net.HttpHeaders
getHeader(String name)
(báo giá):"The header name is case insensitive."
org.apache.http.HttpHeaders
Như tất cả đã đề cập đến nó là
request.getHeader("referer");
Tôi muốn thêm một số chi tiết về khía cạnh bảo mật của tiêu đề người giới thiệu trái ngược với câu trả lời được chấp nhận. Trong các bảng cheat Dự án bảo mật ứng dụng web mở ( OWASP ), bên dưới Bảng gian lận ngăn chặn yêu cầu giả mạo trang web (CSRF), nó đề cập đến tầm quan trọng của tiêu đề người giới thiệu .
Quan trọng hơn đối với kiểm tra Nguồn gốc tương tự được đề xuất này, một số tiêu đề yêu cầu HTTP không thể được đặt bởi JavaScript vì chúng nằm trong danh sách tiêu đề 'bị cấm'. Chỉ bản thân các trình duyệt mới có thể đặt giá trị cho các tiêu đề này, khiến chúng trở nên đáng tin cậy hơn vì thậm chí không thể sử dụng lỗ hổng XSS để sửa đổi chúng.
Kiểm tra Nguồn gốc được đề xuất ở đây phụ thuộc vào ba trong số các tiêu đề được bảo vệ này: Xuất xứ, Người giới thiệu và Máy chủ lưu trữ, làm cho nó trở thành một hệ thống phòng thủ CSRF khá mạnh.
Bạn có thể tham khảo danh sách tiêu đề Cấm ở đây . Tác nhân người dùng (tức là: trình duyệt) có toàn quyền kiểm soát các tiêu đề này không phải người dùng.