利用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
- [php]referer應用--http防盜鏈技術PHPHTTP
- nginx遮蔽特定http_referer的請求NginxHTTP
- HttpHandler應用之 - 防止圖片盜鏈HTTP
- apache中防止盜鏈技術(轉)Apache
- 防止ajax請求重發
- WEB伺服器防盜鏈_HttpAccessKeyModule_Referer(Nginx&&PHP)Web伺服器HTTPNginxPHP
- 網站盜鏈是什麼?盜鏈與廣告流量問題及如何防止網站
- TCP 請求頭TCP
- http請求頭HTTP
- ajax請求如何防止快取快取
- 利用service worker破解防盜鏈
- 有趣的請求引數/請求頭
- ajax中設定請求頭和自定義請求頭
- 20160326 javaweb 請求轉發和請求包含JavaWeb
- HTTP請求頭與響應頭HTTP
- python爬蟲請求頭Python爬蟲
- HTTP請求頭和響應頭詳解HTTP
- 以Referer方案寫一個圖片防盜鏈服務並實現網頁端"破解"網頁
- 以Referer方案寫一個圖片防盜鏈服務並實現網頁端”破解”網頁
- http請求頭與響應頭的應用HTTP
- JavaWeb基礎-Request物件接收表單請求引數JavaWeb物件
- HTTP常用請求頭大揭祕HTTP
- javaWeb03-請求轉發和請求重定向【包含編碼格式與路徑問題】JavaWeb
- Python中get、post請求詳解(HTTP請求頭、狀態碼)PythonHTTP
- 【建站教程】網站引用三方圖片遇到簡單防盜鏈referer的處理辦法網站
- http請求頭個欄位解釋HTTP
- HTTP請求頭中的refer欄位HTTP
- HTTP 請求頭中的 X-Forwarded-ForHTTPForward
- 如何用PHP取得所有HTTP請求頭PHPHTTP
- java webservice 帶請求頭方式處理JavaWeb
- 利用fetch方法實現Ajax請求
- 利用whistle除錯websocket和socket請求除錯Web
- php 利用socket傳送GET,POST請求PHP
- M3u8或者ts協議的直播流影片,如何透過加密防止盜鏈和盜播?協議加密
- 請求的鏈式處理——職責鏈模式(四)模式
- 請求的鏈式處理——職責鏈模式(三)模式
- 請求的鏈式處理——職責鏈模式(二)模式