web页面防盗链功能使用--request.getHeader("Referer") .

关于request.getHeader("Referer")的问题探讨 request.getHeader("Referer")获取上次访问的URL链接,在什么情况下他会出现问题,下面为大家分享下,感兴趣的朋友不要错过 立即下载
1. 防盗链定义:所谓防盗链是指防止其他web站点页面通过连接本站点的页面来访问本站点内容,这样对于本站点来说侵犯了本站点的版权

2.非法用户: 常访问本站点页面的链接有三种出处:

   (1) 地址栏输入链接地址。如地址栏上输入www.csdn.com/news_100.jsp;

   (2)其他站点上的应用程序的页面上通过链接本站点页面资源。如(www.123.com/content.jsp页面上有一链接指向www.youkuaiyun.com/news_100.jsp);

   (3)本站点上的页面资源连接到本站点的另外的页面资源。如(www.csdn.com/mulu.jsp页面上有一链接指向www.csdn.com/news_100.jsp);

这三类用户中第一类和第二类通常是非法用户,如果控制这些用户不能访问本站点页面资源

 3.如何防盗链:通过调用request.getHeader("Referer");判断访问本页面的链接来自哪里。具体做法:

  1. package edu.request;  
  2.   
  3. import java.io.IOException;  
  4. import javax.servlet.ServletException;  
  5. import javax.servlet.http.HttpServlet;  
  6. import javax.servlet.http.HttpServletRequest;  
  7. import javax.servlet.http.HttpServletResponse;  
  8.   
  9. public class RefererServlet extends HttpServlet {  
  10.   
  11.      //防盗链   
  12.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  13.             throws ServletException, IOException {  
  14.         //referer为客户端带来的请求头          
  15.         String referer = request.getHeader("Referer");  
  16.         System.out.println(referer);  
  17.         //如果链接出自地址栏的输入,则跳转至本站点RequestAndResponse应用的首页   
  18.         if (referer==null) {  
  19.             System.out.println("由于您访问的内容版权所有,您是地址栏上输入的链接,即将跳转至本站首页...");  
  20.             response.sendRedirect("/RequestAndResponse/index.jsp");  
  21.             return ;  
  22.         }  
  23.         //如果链接出自本站点的RequestAndResponse应用的页面,则正常显示,如果是出自其他站点或本站点的其他应用,则跳转至本站点RequestAndResponse应用的首页   
  24.         if(!referer.startsWith("http://localhost:8080/RequestAndResponse")){  
  25.             System.out.println("由于您访问的内容版权所有,您是其他网站页面的链接,即将跳转至本站首页...");  
  26.             response.sendRedirect("/RequestAndResponse/index.jsp");  
  27.             return ;  
  28.         }else {  
  29.             System.out.println("来自本站页面的链接,合法用户");  
  30.             request.getRequestDispatcher("content.jsp").forward(request, response);  
  31.         }  
  32.           
  33.           
  34.     }  
  35.   
  36.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  37.             throws ServletException, IOException {  
  38.          doGet(request, response);  
  39.     }  
  40.   
  41. }  
package edu.request;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class RefererServlet extends HttpServlet {

	 //防盗链
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
        //referer为客户端带来的请求头       
		String referer = request.getHeader("Referer");
        System.out.println(referer);
        //如果链接出自地址栏的输入,则跳转至本站点RequestAndResponse应用的首页
        if (referer==null) {
			System.out.println("由于您访问的内容版权所有,您是地址栏上输入的链接,即将跳转至本站首页...");
		    response.sendRedirect("/RequestAndResponse/index.jsp");
			return ;
		}
        //如果链接出自本站点的RequestAndResponse应用的页面,则正常显示,如果是出自其他站点或本站点的其他应用,则跳转至本站点RequestAndResponse应用的首页
        if(!referer.startsWith("http://localhost:8080/RequestAndResponse")){
        	System.out.println("由于您访问的内容版权所有,您是其他网站页面的链接,即将跳转至本站首页...");
        	response.sendRedirect("/RequestAndResponse/index.jsp");
        	return ;
        }else {
        	System.out.println("来自本站页面的链接,合法用户");
        	request.getRequestDispatcher("content.jsp").forward(request, response);
		}
		
        
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
         doGet(request, response);
	}

}

比如:通过http://localhost:8080/ServletDetail/index.jsp页面的一个链接,链接至http://localhost:8080/RequestAndResponse/referer,则request中封装这Referer请求头,其内容为http://localhost:8080/ServletDetail/index.jsp

如下图

:

点击新闻后,控制台输出:



【Java微服务-医疗管理项目】(附源码+资料+教程) 尚医疗是专门为各大医院、门诊提供的一款医疗管理平台。 系统包含:系统管理、药品进销存管理、看病就诊、收费管理、检查管理、数据统计等核心模块。 通过尚医疗系统可以快速、方便的管理病人从挂号到门诊结束所涉及到的全套流程。也可以清晰明了的体现出药品进货、出售的所有记录。......... 阅读详情

相关推荐

H3C VRF实验

POP-vpn-instance-RT1]route-distinguisher 11:11 # VPN实例-RT1的路由区分器值11:11。配置路由泄露,其实就是在一个VPN示例中添加另一个VPN实例的下一跳,比如在VPN实例RT1中添加去往SRV的默认路由。但是也有了一个新的问题,那就是RT1、RT2和RT3也能互访了,这让VPN实例变得没有意义了。[POP]ip vpn-instance RT1 #配置vpn实例-RT1。绑定了VPN实例,所以要把路由添加到VPN实例POP中。

m0_68698993的博客 4025

request.getHeader("referer")防盗链

一、什么是Referer HTTP headers是HTTP请求和相应的核心模块,它承载了关于客户端浏览器、请求页面、服务器等相关信息。Referer是HTTP头中的一个属性,告诉服务器我是从哪个页面链接过来的。request.getHeader(“referer”)可用的情况: 1.<a href="">。 2.表单提交。 request.getHeader(“referer”)不可用的情

cuiyaoqiang的博客 2189

DCDC: 前馈电容优化环路稳定性的设计与验证方法

本文深入探讨了DCDC转换器中前馈电容对环路稳定性的优化设计与验证方法。通过分析前馈电容的作用原理、选型计算和实验验证,详细介绍了如何利用穿越频率和相位裕度等关键参数提升系统性能。文章还提供了实用的设计经验和问题排查技巧,帮助工程师在实际应用中实现DCDC转换器的最佳稳定性。

weixin_42531516的博客 438

request.getHeader("referer")

一. 问题背景 有时候在购物网站登录了自己账号,点击注销,仍然是显示商品的页面,用户仍能正常浏览商品。但是不能用加入购物车的功能,或者购买商品需要登录账号。那么我们怎么实现注销了用户后,浏览器仍然跳转回注销前的页面(此页面一般指购物网站的首页) 二. 解决方法 使用request.getHeader("referer"); 分析: request.getHeader("referer");用于获...

Android_la的博客 1213

RK3588开发板量产前必做:24小时DDR压力测试到底在测什么?(附ArmSoM-W3测试脚本解析)

本文深入解析RK3588开发板量产前的24小时DDR压力测试,揭示其核心价值与技术原理。通过memtester、stressapptest和变频测试的组合使用,全面验证DDR内存稳定性。特别介绍ArmSoM-W3测试脚本的创新设计,包括并行测试架构和异常熔断机制,为开发者提供可靠的量产测试方案。

weixin_30325487的博客 454

StarWind V2V Converter v9 虚拟磁盘转换工具使用教程 (转)

StarWind V2V Converter v9.0.1.268 是一款免费的虚拟磁盘转换工具,支持不同管理程序间的虚拟机镜像格式转换,包括VMDK、VHD/VHDX、IMG和QCOW2等格式。该工具具有窗口修复模式、零拷贝转换和管理程序切换等特色功能,能够轻松实现物理机到虚拟机的转换,并兼容主流管理程序如Hyper-V、ESXi等。使用教程详细介绍了从本地文件选择到格式转换的完整操作流程,转换过程简单高效且不影响原虚拟磁盘数据。

hsh的专栏 1482

request.getHeader("Referer")理解

request.getHeader("Referer")用于获取来源页地址,但有时却为空值,这是怎么回事。原因如下:     getHeader("Referer")要走http协议时才有值,也就是说要通过a标记才能获得那个值,而通过改变location或是a都是得不到那个值的。  request.getHeader("Referer")返回的是一个Enumeration 玫举 En

小糊涂蛋大糊涂神的专栏 3万+

Selenium实战:突破反爬,自动化抓取国家知识产权局专利数据

网络爬虫是数据采集的核心技术,其原理是通过程序模拟浏览器行为,自动访问网页并提取结构化信息。在数据驱动决策的今天,高效获取公开数据对市场分析、技术调研和竞争情报至关重要。然而,面对广泛应用的JavaScript动态渲染和反爬虫机制,传统的静态页面抓取方法往往失效。Selenium作为浏览器自动化工具,通过驱动真实浏览器执行JavaScript,能够有效绕过前端反爬,实现“可见即可得”的数据抓取,在需要与页面进行复杂交互或处理动态内容的场景中价值显著。本文以【专利数据】抓取为例,结合【Selenium】工具,

weixin_33881140的博客 393

request.getHeader() 相关详细

  request.getHeader() 相关详细 在三种情况下,request.getHeader("REFERER")取值1:通过链接跳过来 2:在地址栏中输入URL,打回车3:刷新 当链接过来的时候,referer的值是链接过来的页面的URL,正常。我刷新的时候referer的值没有变,但当我在地址栏中打回车(URL没有改变,只是打回车),referer值却变成NULL了。...

iteye_15130的博客 2341

【图像超分】论文复现:新手入门!Pytorch实现SRCNN,数据预处理、模型训练、测试、评估全流程详解,注释详细,简单修改就可以训练你自己的图像数据,有训练好的模型下载地址,随取随用

【图像超分】论文精读:Image Super-Resolution Using Deep Convolutional Networks(SRCNN)请配合上述论文精读文章使用,效果更佳!图像超分辨率SRCNN和FSRCNN复现代码,除基本的网络实现外,还有特征图可视化,PSNR曲线图可视化,测试自己的图像数据等不想理解原理,希望直接跑通然后应用到自己的图像数据的同学,请直接下载上面的代码,有训练好的模型,直接用即可。具体使用方式见代码中的README!有问题来本文评论区留言!准备数据集,以及数据预处理。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 2万+

Motoman机器人离线编程——Motocom32开发简介

欢迎关注Jungle的Motoman机器人离线编程专栏系列文章: Motoman机器人离线编程——Motocom32开发简介 Motoman机器人离线编程——Visio Studio环境配置 Motoman机器人离线编程——Motocom32库函数的使用与封装 Motoman机器人离线编程——Motocom32参考文献及注意事项 Motoman机器人离线编程——MotocomES介绍 ...

冯Jungle的个人博客 8713

request.getHeader("referer")的作用

request.getHeader("referer")获取来访者地址。只有通过链接访问当前页的时候,才能获取上一页的地址;否则request.getHeader("referer")的值为Null,通过window.open打开当前页或者直接输入地址,也为Null。所以,getHeader("referer")要走http协议时才有值,也就是说要通过&lt;a href="url"&gt;a&l...

Gorden的博客 1万+

(八)DDR_PHY架构及功能——(PUB组成、初始化及Training流程、Clock关系)

文章目录一、DDR_PHY结构组成1.1、DDR Memory子系统1.2、DDR_PHY架构组成1.3、PUB模块功能实现流程1.3.1、DDR系统初始化流程1.3.2、PLL初始化流程 一、DDR_PHY结构组成 1.1、DDR Memory子系统   Memory子系统主要由DDR Controller和DDR_PHY(含DDR_IO)两个部分组成。DDR Controller主要承担其它子系统(如CPU)与Memory子系统进行数据交互时的传输效率及调度,DDR_PHY主要负责数据交互过程中的传输速

Mr.翟的博客 1万+

web页面防盗链功能使用--request.getHeader("Referer")

1. 防盗链定义:所谓防盗链是指防止其他web站点页面通过连接本站点的页面来访问本站点内容,这样对于本站点来说侵犯了本站点的版权 2.非法用户: 常访问本站点页面的链接有三种出处:    (1) 地址栏输入链接地址。如地址栏上输入www.csdn.com/news_100.jsp;    (2)其他站点上的应用程序的页面上通过链接本站点页面资源。如(www.123.com/content.j

ITSTAR 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

web页面防盗链功能使用--request.getHeader("referer")

import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; impor

chuang504321176的博客 573

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

使用HttpServletRequest对象的getHeader(“referer”)方法实现下载资源防盗链的功能

请编写一个类,该类使用HttpServletRequest对象的getHeader(“referer”)方法实现下载资源防盗链的功能在实际开发中,经常会使用referer头字段,一些站点为吸引人气经常会为了提高站点的访问量,提供各种软件的下载页面,他们本身没有这些资源,只是将下载的超链接指向其他站点的资源。为防止这种盗链,就需要检查请求来源,只接受本站点链接发送的下载请求,防止其他站点链接的下载请...

Unitue_逆流 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

javaweb之request获取referer请求头实现防盗链

javaweb之request获取referer请求头实现防盗链 package test.request; import java.io.IOException; import javax.servlet.ServletException; import jav...

Survivalist_Boy的博客 2352

通过HttpServletRequest获取请求header信息及request.getHeader("referer")的作用

HttpServletRequest获取所有header参数: for (Enumeration enumeration = httpServletRequest.getHeaderNames(); enumeration     .hasMoreElements(); _fldint.put(s, obj)) {    s = (String) enumeration.nextElemen

down177的专栏 1万+

防盗链之--request.getHeader("Referer")

在开发web程序的时候,有时我们需要得到用户是从什么页面连过来的,这就用到了referer。 它是http协议,所以任何能开发web程序的语言都可以实现,比如jsp中是: request.getHeader("referer"); php是$_SERVER['HTTP_REFERER']。其他的我就不举例了(其实是不会其他的语言)。 js的话就是这样做:javascript:docum

lishijun155的博客 912

request.getHeader("Referer");的使用

在开发web程序的时候,有时我们需要得到用户是从什么页面连过来的,这就用到了referer。 它是http协议,所以任何能开发web程序的语言都可以实现,比如:在servlet或jsp中使用: request.getHeader("referer"); 那它能干什么用呢?我举两个例子: 1,防止盗连,比如我是个下载软件的网站,在下载页面我先用referer来判断上一页面是不是自己网站,如果

xjh1991xjh的专栏 1410

request.getHeader("referer") 使用技巧

request.getHeader("referer")  在开发web程序的时候,有时我们需要得到用户是从什么页面连过来的,这就用到了referer。 它是http协议,所以任何能开发web程序的语言都可以实现,比如jsp中是: request.getHeader("referer"); php是$_SERVER['HTTP_REFERER']。其他的我就不举例了(其实是不会其他...

tianye_uu的专栏 680
上一篇: 大数据
下一篇: 在没有ftp上传软件时怎么上传
HackProgramer
博客等级 码龄12年 255粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值