利用Referer請求頭防止“盜鏈”-Javaweb
~本特利~ |
在實際開發中,經常會使用Referer頭欄位,例如,一些站點為了吸引人氣並且提高站點訪問量,提供了各種軟體的下載頁面,但是它們本身沒有這些資源,只是將下載的超連結指向其它站點上的資源。而真正提供了下載資源的站點為了防止這種“盜鏈”,就需要檢查請求來源,只接收本站連結傳送的下載請求,阻止其它站點連結的下載請求。
1.在專案的包裡編寫一個名為的類,負責提供下載內容並且要求下載請求的連結必須通過本網站進入,否則會將請求轉發給下載說明的HTML頁面
public class DownManagerServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
// 獲取referer頭的值
String referer = request.getHeader("referer");
// 獲取訪問地址
String sitePart = "http://" + request.getServerName();
// 判斷referer頭是否為空,這個頭的首地址是否以sitePart開始的
if (referer != null && referer.startsWith(sitePart)) {
// 處理正在下載的請求
out.println("dealing download ...");
} else {
// 非法下載請求跳轉到download.html頁面
RequestDispatcher rd = request.getRequestDispatcher("/download.html");
rd.forward(request, response);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
doGet(request, response);
}
}
2.在web根目錄下編寫一個下載說明的檔案download.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="/chapter04/DownManagerServlet">download</a>
</body>
</html>
3.在web.xml中配置好相關對映
<servlet>
<display-name>DownManagerServlet</display-name>
<servlet-name>DownManagerServlet</servlet-name>
<servlet-class>cn.edu.demo04.request.DownManagerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DownManagerServlet</servlet-name>
<url-pattern>/DownManagerServlet</url-pattern>
</servlet-mapping>
相關文章
- php偽造Referer請求反盜鏈資源PHP
- .htaccess 防止圖片盜鏈
- nginx遮蔽特定http_referer的請求NginxHTTP
- TCP 請求頭TCP
- 有趣的請求引數/請求頭
- ajax中設定請求頭和自定義請求頭
- HTTP請求頭與響應頭HTTP
- python爬蟲請求頭Python爬蟲
- HTTP請求頭和響應頭詳解HTTP
- 以Referer方案寫一個圖片防盜鏈服務並實現網頁端"破解"網頁
- 以Referer方案寫一個圖片防盜鏈服務並實現網頁端”破解”網頁
- 利用fetch方法實現Ajax請求
- JavaWeb基礎-Request物件接收表單請求引數JavaWeb物件
- Python中get、post請求詳解(HTTP請求頭、狀態碼)PythonHTTP
- http請求頭與響應頭的應用HTTP
- HTTP常用請求頭大揭祕HTTP
- javaWeb03-請求轉發和請求重定向【包含編碼格式與路徑問題】JavaWeb
- 利用whistle除錯websocket和socket請求除錯Web
- 【建站教程】網站引用三方圖片遇到簡單防盜鏈referer的處理辦法網站
- http請求頭個欄位解釋HTTP
- java webservice 帶請求頭方式處理JavaWeb
- Spring Boot 防止介面被惡意重新整理、暴力請求Spring Boot
- M3u8或者ts協議的直播流影片,如何透過加密防止盜鏈和盜播?協議加密
- SpringMVC處理請求頭、響應頭、編碼行為SpringMVC
- vue帶參請求,登入時效(防止重複登陸)Vue
- 如何使POST請求具有冪等性防止重複提交 - mscharhag
- HTTP請求頭的Content-Type欄位HTTP
- 請求協議中的content-type頭協議
- 使用Python獲取HTTP請求頭資料PythonHTTP
- MDN新增“HTTP有條件請求”標頭HTTP
- Nginx轉發導致請求頭丟失Nginx
- 微服務的全鏈路請求(RequestContextHolder)微服務Context
- 關於常用的http請求頭以及響應頭詳解HTTP
- 走進JavaWeb技術世界5:初探Tomcat的HTTP請求過程JavaWebTomcatHTTP
- 聊聊如何利用kafka實現請求-響應模式Kafka模式
- 跟我一起動手實現Tomcat(三):解析Request請求引數、請求頭、cookieTomcatCookie
- Nginx 防盜鏈Nginx
- 自定義的請求頭,你去哪裡了?