博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
request.getHeader("referer")防盗链
阅读量:2505 次
发布时间:2019-05-11

本文共 2042 字,大约阅读时间需要 6 分钟。

一、什么是Referer

HTTP headers是HTTP请求和相应的核心模块,它承载了关于客户端浏览器、请求页面、服务器等相关信息。Referer是HTTP头中的一个属性,告诉服务器我是从哪个页面链接过来的。

  • request.getHeader(“referer”)可用的情况:
    1.<a href="">
    2.表单提交。
  • request.getHeader(“referer”)不可用的情况:
    1.从收藏夹链接。
    2.自定义地址。
    3.浏览器直接输入。

二、request.getHeader(“referer”)使用步骤

第一步: web.xml中配置过滤器

safeChainFilter
com.bh.filter.SafeChainFilter
safeChainFilter
/*

第二步:过滤器实现doFilter方法

@Override     public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {        HttpServletRequest request = (HttpServletRequest) req;        HttpServletResponse response = (HttpServletResponse) res;        String requestAddress = request.getRequestURL().toString();        //得到用户是从什么页面连过来的        String requestHeader = request.getHeader("referer");        System.out.println("requestAddress: "+requestAddress);        System.out.println("requestHeader: "+requestHeader);        //对样式文件不做过滤        if (requestAddress.indexOf("/css/")<0 &&                requestAddress.indexOf("/js/")<0 &&                requestAddress.indexOf("/images/")<0) {            if (!requestAddress .equals("http://localhost:8080/FangDaoLian_Test/index.jsp")) {                if (!requestAddress.equals("http://localhost:8080/FangDaoLian_Test/Login.jsp")) {                    if (requestHeader!=null) {                        if (!requestHeader.startsWith("http://localhost:8080") ||                                 !requestHeader .startsWith("http://localhost:8080")) {                            response.sendRedirect("error.gif");                            return;                        }                    } else {
//直接在浏览器里输入有referer的页面,返回是null response.sendRedirect(request.getContextPath() + "/Login.jsp"); return; } } } } chain.doFilter(req, res); }

转载地址:http://qwmgb.baihongyu.com/

你可能感兴趣的文章
[P1121]环状最大两段子段和
查看>>
Toolbar使用
查看>>
51nod 1197 字符串的数量 V2(矩阵快速幂+数论?)
查看>>
Oracle data guard常用维护操作命令
查看>>
Java中的集合框架-Map
查看>>
[HNOI2018]道路(DP)
查看>>
OKMX6Q在ltib生成的rootfs基础上制作带QT库的根文件系统
查看>>
zabbix
查看>>
多线程基础
查看>>
完美解决 error C2220: warning treated as error - no ‘object’ file generated
查看>>
使用SQL*PLUS,构建完美excel或html输出
查看>>
SQL Server数据库笔记
查看>>
X-Forwarded-For伪造及防御
查看>>
android系统平台显示驱动开发简要:LCD驱动调试篇『四』
查看>>
Android 高仿微信头像截取 打造不一样的自定义控件
查看>>
Jenkins的初级应用(1)-Publish Over SSH
查看>>
利用正则表达式群发定制邮件
查看>>
【原】RDD专题
查看>>
第三周——构建一个简单的Linux系统MenuOS
查看>>
Docker 的两类存储资源 - 每天5分钟玩转 Docker 容器技术(38)
查看>>