我们知道在http中请求头中有一个referer来表示请求来自于哪里,于是我们就可以通过这个请求来判断是不是应该非法的请求,例如没有登录就直接进行访问。下面用Referer来实现应该简单的防盗链。

        我们首先创建登录界面,然后再创建一个Servlet来接收登录请求,如果直接访问这个Servlet那么就重定向到登录界面,如果链接来自于登录界面,那么就输出访问成功,代码如下

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>登录</title>
</head>
<body>
<form action="http://localhost:8080/servlet/referer" method="post">用户名:<input type="text" name="username"><br>密 码:<input type="password" name="password"><br><input type="submit" value="登录">
</form></body>
</html>
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;@WebServlet("/referer")
public class RefererServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取RefererString referer = request.getHeader("Referer");//设置响应的MIME和编码response.setContentType("text/html;charset=utf-8");//判断是不是来自登录界面if ("http://localhost:8080/servlet/login_request.html".equals(referer)){//获取输出流写出数据PrintWriter writer = response.getWriter();writer.write("<h1>访问成功</h1>");}else {//重定向到登录界面response.sendRedirect("http://localhost:8080/servlet/login_request.html");}}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request,response);}
}

我们首先正常流程进行登录访问,发现访问成功

那么现在我们再来尝试直接访问这个Servlet,发现重定向到了登录界面


上面就是一个最简单的防盗链,我们通过Referer就能实现对请求的控制,对哪些请求做出正确的响应,对哪些非法请求做出拒绝 

HttpServletRequest通过Referer实现简单防盗链相关推荐

  1. nginx利用referer指令实现防盗链配置

    nginx模块ngx_http_referer_module通常用于阻挡来源非法的域名请求,我们应该牢记.下面这篇文章主要介绍了nginx利用referer指令实现防盗链配置的相关资料,需要的朋友可以 ...

  2. php 实现防盗链,php简单防盗链实现方法

    php简单防盗链实现方法 文章主要介绍了php简单防盗链实现方法,涉及php针对服务器端预定义变量调用及字符串处理的相关技巧,具有一定参考借鉴价值,需要的'朋友可以参考下. 本文实例讲述了php简单防 ...

  3. js修改referer 解决图片防盗链问题

    最近在项目中遇到了一个问题就是项目中需要显示其他网站上的图片,网上找了好多,但是没有一个具体的代码策略,我在这里给大家提供一个方案. 先说说防盗链的原理,http 协议中,如果从一个网页跳到另一个网页 ...

  4. 判断request请求头中的referer实现的防盗链操作

    通俗的来讲,跨站访问资源,被称为盗链.比如某一个商业网站,有很多自主版权的图片,自身展示用于商业目的.而另一个没有版权的网站,希望在自己的网站上面也展示这些图片,直接使用超链接到有版权的网站,这样以来 ...

  5. 基于NodeJS的HTTP server Plus 2:防盗链(referer)

    什么是 "盗链"? "盗链" 说白了就是利用别人网站的资源链接放在自己的站点,在未经允许的情况下去获取别人网站里面的图片或者视频等资源,导致资源所有者的网站的流 ...

  6. html设置referer防盗链,referer与防盗链

    referer是什么 referer 中文意思是:参照页面,引用页. 下图直观感受,(づ ̄ 3 ̄)づ image 直接在浏览器中输入url地址来直接访问图片/js/css等资源时是没有referer的 ...

  7. referer与防盗链

    referer是什么 referer 中文意思是:参照页面,引用页. 下图直观感受,(づ ̄ 3 ̄)づ 直接在浏览器中输入url地址来直接访问图片/js/css等资源时是没有referer的, 如果有r ...

  8. 文章抓取显示盗链 php,web资源盗链与防盗链技术解析

    摘要:什么是资源盗链?简单的说,就是某些不法的网站,通过在其自身网站程序里未经过许可非法调用其他网站的资源,然后在自己的网站上显示这些调用的资源,达到了填充自身网站显示的效果,但是浪费了调用资源网站的 ...

  9. apache web服务器与防盗链的设置

    一.安装apache2.4.23 新版本的httpd-2.4新增以下特性: 新增模块: mod_proxy_fcgi(可提供fcgi代理) mod_ratelimit(限制用户带宽) mod_requ ...

最新文章

  1. Java进程和线程关系及区别
  2. 64位win7安装vs2010出现“组件安装失败...”等问题的解决方法
  3. 3D视觉检测的未来:光度立体技术
  4. Linux命令--pwd
  5. [转贴]超过80%的80后大学生不知道自己将来要干什么
  6. gradient设置上下渐变_iOS 绘制渐变·实例篇
  7. HashSet源码分析
  8. java中表示根号三_Java命名规范
  9. 基于组合遗传粒子群算法的旅行商问题求解
  10. Java中实现统计一个字符串在另一个字符串中出现的次数统计
  11. 利用pandas,pyplot 绘制柱状图
  12. testbench实例 vhdl_[转载]VHDL的testbench的编写
  13. dcdc模块降额设计_大功率IGBT模块及驱动技术
  14. java s_java中\s什么意思?
  15. 使用qq邮箱作为程序客户端自动发送邮件
  16. 牛逼!你竟然把VSCode玩成了IDEA的效果,有点哇塞。。。
  17. elementUI表格合并行数据
  18. kali钓鱼(超详细)
  19. hourglass网络详解+pytorch代码
  20. python职场应用英语作文_职场英语作文万能句子

热门文章

  1. eNSP连接局域网和互联网
  2. EasyUI:combotree(树形下拉框)复选框选中父节点(子节点的状态也全部选中)输入框中只显示父节点的文本值
  3. nvidia frameview sdk有什么用_继续耍猴!NVIDIA承认芯片短缺,显卡缺货涨价要维持数月...
  4. nginx启动不了linux,nginx启动失败问题集锦
  5. #千锋逆战班,ssf# 在千锋“逆战”学习第 19天, 每个人生阶段都需要努力去扮好自己的角色,越努力越轻松,越坚强越幸运! 加油
  6. windows的nginx启动和停止
  7. 奇瑞搭载了鸿蒙车载系统,Ai芯天下丨华为鸿蒙进军汽车界,车载系统曝光,自主品牌巨头首发...
  8. 数字地球大气散射的GPU实现
  9. ASP.net编写一个网页计算器
  10. 我国姓氏历史源远流长,这些形形色色的姓氏是如何产生的?