HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。

  if (Request.ServerVariables["HTTP_REFERER"] == null || !Request.ServerVariables["HTTP_REFERER"].ToString().Contains(Request.ServerVariables["HTTP_HOST"].ToString()))
{
Server.Transfer("Error.aspx");
}

下列情况是从浏览器的地址栏正常取得Request.ServerVariables("HTTP_REFERER"):
1) 直接用<a href="">
2) 用Submit或<input type="image">提交的表单(POST或GET)
3) 使用JAvaScript提交的表单(POST或GET)


下面我们再看看Request.ServerVariables("HTTP_REFERER")不能正常取值的情况:
1) 从收藏夹链接
2) 单击主页或自定义的地址
3) 在浏览器中直接输地址
4) 使用JavaScript的Location.href或者是Location.replace()
5) <%Response.Redirect%>
6) <%Response.AddHeader%>或者是<mete http-equiv="refresh">转向
7) 用XML加载地址
显然,Request.ServerVariables("HTTP_REFERER")在多数情况下是不能正常工作的,下面我们看一个例子:
ref.asp
<% 
response.write "You came from: " & request.servervariables("http_referer") 
%>
ref.htm
<% 
Response.AddHeader "Refresh", "10;URL=ref.asp" 
%>
<meta http-equiv='refresh' content='10;URL=ref.asp'>
<form method=GET action=ref.asp name=getform> 
<input type=submit value=' Go there (GET) >> '> 
<input type=image style='cursor:hand'> 
</form><p> 
看看上面的代码会得到什么的结果.
<form method=POST action=ref.asp name=postform> 
<input type=submit value=' Go there (POST) >> '> 
<input type=image style='cursor:hand'> 
</form><p>
<a href='ref.asp'>直接链接</a><p>
<a href='#' οnclick='window.location.href="ref.asp";return false;'>Javascript location</a><p>
<a href='#'οnclick='window.location.replace("ref.asp");return false;'>Javascript replace</a><p>
<a href='#' οnclick='document.getform.submit();return false;'>javascript GET</a><p>
<a href='#' οnclick='document.postform.submit();return false;'>javascript POST</a>
Request.ServerVariables(HTTP_REFERER)的工作方式

转载于:https://www.cnblogs.com/B-bowen/p/4275121.html

HTTP Referer 防外链相关推荐

  1. 《markdown》语雀导出markdown的图片外链问题

    本文节选自本人博客:https://www.blog.zeeland.cn/archives/rgoioiabeoi32 Introduction 本人因为经常使用语雀写博客,但是因为语雀转markd ...

  2. 破解百度、网易相册外链的代码

    很显然写博客时将图片放到一个专门的图床上是一个好习惯,虽然一蓑烟云还没有养成这个习惯,因为图片直接放到网站空间上每次搬家都是个麻烦事一方面,而且图片过大过多会影响页面加载的速度.当然手头宽裕的童鞋可以 ...

  3. Linux之提高Nginx的安全性:受限server_tokens /user_agents/buffer_size/连接数/请求方法/外链/不用模块 使用日志/TLS/HTTPS/升级

    1.保持Nginx的及时升级 目前Nginx的稳定版本为1.14.0,最好升级到最新版本,看官方的release note你会发现他们修复了很多bug,任何一款产品的生产环境都不想在这样的bug风险下 ...

  4. 外链图片也有风险吗?

    一直以来,各大论坛和邮箱都允许使用外链图片.一方面解决了上传和保存带来的资源消耗,更重要的是方便用户转载图片. 然而,简单的背后是否暗藏着什么风险呢?大多或许认为,不就是插入了一张外部图片而已,又不是 ...

  5. html添加外链图片代码,web 外链图片 403 解决方案(http referrer)

    场景说明 以前一直使用 github 做自己的图床,不过国外的网站比较卡. 近期换了一下国内的 gitee 使用,不过发现图片都是 403,但是如果打开图片地址,图片是存在的. 其实原理也比较好理解, ...

  6. 中文网页的外链对Google谷歌SEO有用吗

    中文网页的外链对Google谷歌SEO有用吗 首先答案是YES,一定有用. 要看一个外链是否有用,要看以下3点: 要看这个链接是否是dofollow (而不是nofollow); 要看该中文网页的DA ...

  7. 互联网晚报 | 1/12 星期四 | 微信回应切断抖音外链;爱奇艺App限制投屏;iPhone 16 Pro或取消灵动岛摄像头...

    微信回应切断抖音外链:坚决打击给用户造成诱导.骚扰的外链  1月10日晚间,第一财经独家报道抖音链接目前在微信内既无法直接打开.也无法复制完成跳转,甚至要通过图片OCR识别进行文字提取的情况.但微信内 ...

  8. 外链自动转内链html,typecho网站外链自动转换内链插件ShortLinks

    ShortLinks插件是一款可以把网站中的外链自动转换为内链的typecho插件,同时支持自定义短链接功能,且可以统计链接的点击数量.一般做SEO优化的人认为网站存在过多的外链会导致页面权重流失,从 ...

  9. 外链转内链php,Typecho:网站外链自动转换内链插件ShortLinks

    ShortLinks插件是一款可以把网站中的外链自动转换为内链的typecho插件,同时支持自定义短链接功能,且可以统计链接的点击数量.一般做SEO优化的人认为网站存在过多的外链会导致页面权重流失,从 ...

最新文章

  1. 开源依旧:再次分享一个进销存系统
  2. 使用ADO.NET 的最佳实践(zz)
  3. 经典教材《统计学习导论》现在有了Python版
  4. linux 第十五章 shell 脚本习题
  5. C++基类和派生类的析构函数
  6. 面向侧面的程序设计AOP-------《二》本质
  7. mac 设计表结构_模具设计丨问题点检表、全套标准件结构分布,值得转发
  8. 《算法导论》读书笔记--第1、2章课后题 (转)
  9. win java_Win搭建JAVA环境
  10. 数据结构与算法python—12.二叉搜索树及python实现与leetcode总结
  11. 按GB 11643标准对大陆身份证号码分析验证
  12. Maxwell参数化建模和优化设计
  13. 13.2 RS编码和纠错算法
  14. MapReduce之幺半群
  15. strut2 上传文件
  16. HTML5在线摄像头应用
  17. 腾讯首次攻破屏下指纹识别技术;苹果新Mac Pro最贵将卖到4.2万;Haxe 4.0发布 | 极客头条...
  18. 解决MySQL Connector NET xxxx无法卸载的问题
  19. matlab海龟交易策略,【策略篇】海龟交易系统使用方法和源码
  20. 声音传感器模块的改进

热门文章

  1. 增加自增列 耗时长_又一批长事务,P0故障谁来背锅?
  2. javax消息队列_Java面试—消息队列
  3. android系统的测试方法,运行测试  |  Android 开源项目  |  Android Open Source Project...
  4. python装饰器改变命运
  5. Oracle XTTS跨平台数据库迁移(从Unix迁移数据库到Linux)_Oracle数据库迁移项
  6. 三层交换机工作原理(转载)
  7. 6.Java集成开发环境
  8. Hive远程模式安装(1.00)
  9. 第十三周学习进度情况
  10. Maven project deploy to Nexus