HTTP协议、时间戳、防盗链的一些概念
HTTP协议
什么是HTTP协议
(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
HTTP 工作原理
HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。
Web服务器根据接收到的请求后,向客户端发送响应信息。
HTTP默认端口号为80,但是你也可以改为8080或者其他端口。
HTTP三点注意事项:
- HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
- HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
- HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
HTTP状态码
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
HTTP状态码的英文为HTTP Status Code。
下面是常见的HTTP状态码:
- 200 - 请求成功
- 301 - 资源(网页等)被永久转移到其它URL
- 404 - 请求的资源(网页等)不存在
- 500 - 内部服务器错误

时间戳
什么是时间戳
一个能表示一份数据在某个特定时间之前已经存在的、 完整的、 可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间
它能用来干什么
版本更新,解决浏览器缓存
防盗链
基础防盗链
基础防盗链主要是针对客户端请求过程中所携带的一些关键信息来验证请求的合法性, 比如客户端请求IP,请求URL中携带的referer。优点是规则简单,配置和使用都很方便,缺点是防盗链所依赖的验证信息很多都是可以伪造的,因此此类防盗链可靠性较低。
Java代码手段防止非法请求,思路如下:
1.获取到当前请求的域名,如www.a.com
2.获取到请求资源的上一个地址
3.判断上一个地址是否为空,如果为空代表的是直接访问的资源,非法
还有一种情况就是B项目访问时上一个地址www.b.com/xxx 不是资源所在地址,非法
新建一个过滤器,实现逻辑,如果非法则显示图像,拦截return ,否则放行
public class ImageFilter implements Filter{ @Override
public void destroy() {
System.out.println("过滤器销毁"); } @Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("dofilter");
//获取到当前请求的连接地址和上一个发送请求的地址
HttpServletRequest httprequest=(HttpServletRequest)request;
HttpServletResponse httpresponse=(HttpServletResponse)response; //获取上一个发送请求的连接
String referer = httprequest.getHeader("Referer");
String serverName = httprequest.getServerName();
System.out.println(referer+"\t"+serverName);
if(referer==null||!referer.contains(serverName)) {
request.getRequestDispatcher("/img/ffqq.png").forward(request, response);
return;
} //放行
chain.doFilter(request, response); } @Override
public void init(FilterConfig arg0) throws ServletException {
System.out.println("过滤器启动");
} }
web.xml配置过滤地址:
<filter>
<filter-name>imgFilter</filter-name>
<filter-class>com.wdksoft.ImageFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>imgFilter</filter-name>
<url-pattern>/img/*</url-pattern>
</filter-mapping>
Referer在HTTP协议里有特殊的用途,当浏览器向服务器发送请求时,一般会带上
Referer头,告知服务器该请求是从哪个页面链接过来的。Referer经常被用于页面访问统计、图片防盗链等。
流媒体直播同样支持Referer防盗链,当请求发送到CDN服务器后,CDN服务器检查客户URL中所携带的Referer字段的信息,禁止或者允许符合特定规则(支持正则匹配)的
防盗链具体具体相关内容可以看这位大佬的博客:https://blog.csdn.net/weixin_36562804/article/details/81014642
HTTP协议、时间戳、防盗链的一些概念的更多相关文章
- 【七牛云】时间戳防盗链鉴权php实现
基于时间戳防盗链的功能其实每家的CDN都是支持的.主要是通过使用约定的加密字符串来对具有访问有效期的资源链接进行一些加密计算的到一个sign值,然后访问外链里面带上这个sign和截止时间戳去访问CDN ...
- http协议以及防盗链技术
http协议,又称为超文本传输协议,顾名思义,http协议不仅能传输文本,还能传输图片,视频,压缩包等文件,http协议是建立在tcp/ip协议的基础之上的,http协议对php程序员来讲可以说是重中 ...
- php笔记05:http协议中防盗链技术
倘若我们自己在电脑上写了一个网站文件(可以是html,php文件等等),但是只希望本机可以访问这个文件,不希望别的电脑访问就需要这里的防盗链技术 1.我们在本地写了一个import.php文件: 而且 ...
- PHP HTTP协议:防盗链
test.html:主界面 <html> <head> <meta http-equiv="content-type" content="t ...
- Nginx 之四: Nginx服务器的rewrite、全局变量、重定向和防盗链相关功能
一:Nginx 后端服务器组的配置: 1.upstream: 用于设置后端服务器组的主要指令,upstream类似于之前的server块或http块,用法如下: upstreame Myserver{ ...
- Nginx服务器的rewrite、全局变量、重定向和防盗链相关功能
一:Nginx 后端服务器组的配置: 1.upstream: 用于设置后端服务器组的主要指令,upstream类似于之前的server块或http块,用法如下: upstreame Myserver{ ...
- web html 防盗链
一概念 1防盗链 在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件,通过referer,网站可以检测目标网页访问的来源网页.有了referer跟踪来 ...
- 3_Jsp标签_简单标签_防盗链和转义标签的实现
一概念 1防盗链 在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件,通过referer,网站可以检测目标网页访问的来源网页.有了referer跟踪来 ...
- nginx之旅(第二篇):nginx日志管理、nginx防盗链、nginx虚拟主机
一.nginx日志管理 Nginx访问日志主要有两个参数控制 1) log_format #用来定义记录日志的格式(可以定义多种日志格式,取不不同名字即可) log_format log_name s ...
随机推荐
- 基于 H5与webGL 的低碳工业园区监控系统
前言 低碳工业园区的建设与推广是我国推进工业低碳转型的重要举措,低碳工业园区能源与碳排放管控平台是低碳工业园区建设的关键环节.如何对园区内的企业的能源量进行采集.计量.碳排放核算,如何对能源消耗和碳排 ...
- [flask]邮件配置-20171227
环境变量配置: # PowerShell设置环境变量: $env:MAIL_USERNAME = "" $env:MAIL_PASSWORD = "" 国内: ...
- char*a[10] ={"123456","2345"}和char*a="abcde"
- 《Python学习手册 第五版》 -第12章 if测试和语法规则
本章节的内容,主要讲解if语句,if语句是三大复合语句之一(其他两个是while和for),能处理编程中大多数逻辑运算 本章的重点内容如下: 1.if语句的基本形式(多路分支) 2.布尔表达式 3.i ...
- Go语言实现:常见排序算法
冒泡排序: 时间复杂度:O(n^2) 稳定性:稳定 //冒泡排序 //相邻两位交换,12交换,23交换,34交换,把最大的数放到最右边 //利用flag标记可以避免无效循环 func BubbleSo ...
- java中深拷贝浅拷贝简析
Java中对象的创建 clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象.所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象.那 ...
- 06-HTML
今日知识 1. HTML基本语法 2. 特殊符号表示 3.总结 HTML 1. Hyper Text Mark Language 超文本标记语言 * 超文本: * 超文本是用超链接的方法,将各种不同空 ...
- pytorch之 activation funcion
import torch import torch.nn.functional as F from torch.autograd import Variable import matplotlib.p ...
- 数据算法 --hadoop/spark数据处理技巧 --(11.K-均值聚类 12. k-近邻)
十一.k-均值聚类 这个需要MR迭代多次. 开始时,会选择K个点作为簇中心,这些点成为簇质心.可以选择很多方法啦初始化质心,其中一种方法是从n个点的样本中随机选择K个点.一旦选择了K个初始的簇质心,下 ...
- SSM/SSH框架的MySQL 读写分离实现的一种简单方法
简介 MySQL已经是使用最为广泛的一种数据库,往往实际使用过程中,为实现高可用及高性能,项目会采用主丛复制的方式实现读写分离.MySQL本身支持复制,通过简单的配置即可实现一主多从的配置,具体实现可 ...