http协议以及防盗链技术
http协议,又称为超文本传输协议,顾名思义,http协议不仅能传输文本,还能传输图片,视频,压缩包等文件,http协议是建立在tcp/ip协议的基础之上的,http协议对php程序员来讲可以说是重中之重了;
http请求基本结构分为:请求行;消息头;实体内容;
请求行:
GET/xxx/xxx.html HTTP/1.1 //HTTP/1.1是http协议版本,1.1支持长连接,1.0支持短连接,目前普遍使用1.1版本;
消息头(请求报头):
Accept:*/* //表示客户端可接受什么类型的资源,*表示通配符,表示可以接受任何类型的资源;
Referer : http://localhost:80/XX.html //表示用户是从哪里链接过来的(之后防盗链技术会详解);
Accept-Launguage: zh-cn //表示页面可以支持哪种语言;
User-Agent: Mozila/4.0 //表示浏览器的内核以及操作系统;
Accept-Encoding:gzip,deflate //表示客户端支持什么类型的数据压缩格式;
Host:localhost:80 //表示主机号和端口,这个是给tcp/ip协议识别的;
Connection:Keep-Alive //表示长连接,不会立刻中断请求;
实体内容 //表示客户端向服务器传递了哪些资源;
http响应内容:
HTTP/ 1.1 200 OK //200表示服务器请求成功;其余常见的状态码在后面说;
Server: //表示服务器信息;
Date: //浏览器请求该页面的时间;
Content-Length: //表示服务器回送了多少字节的资源;
Content-Type: //文档类型及使用什么编码;
Last-Modified: //所请求的资源最新更新时间;
Refresh:1;url=http:xxx.com //间隔多少秒之后重定向;可在header()函数中写入实现X秒后重定向页面;
Content-Disposition: //这个关于文件下载;
Transfer-Encoding: //文件下载
Set-Cookie:
Keep-Alive:timeout=5,max=99 //表示长连接可维持多少秒;
Expires: -1 ; //控制页面是否支持缓存;浏览器默认支持缓存,在header函数中输入以下三个头信息;
Cache-Control: no-cache ; //缓存存在的时间是可以自行指定的;
Pragma: no-cache ; //控制页面是否支持缓存;
http响应的状态码详解可以点击下面链接查阅:https://baike.baidu.com/item/HTTP%E7%8A%B6%E6%80%81%E7%A0%81/5053660?fr=aladdin
常用的有302,304,202,404状态码:302状态码一般用于做重定向;404状态码通常是所查找的资源不存在;304码一般在当http发送请求资源时发现缓存中有相同资源,浏览器则会向服务器端发送一个(Last-Modified:)该资源最近更新的时间参数,由服务器去验证该资源的最近更新时间是否一致,如一致说明该资源没有进行更新则向缓存取出该资源;
在PHP中你可以通过 echo $_SERVER 来获取所有关于该页面HTTP协议的所有内容;
常用的有:
HTTP_HOST //主机名;
DOCUMENT_ROOT //获取apche的主目录;
REQUEST_URI //获取请求的资源名;
REMOVE_ADDR //获取当前访问客户端的IP地址;
HTTP_REFERER //告诉服务器我是从哪个页面链接过来的;
用法: $_SERVER[ ' REMOVE_ADDR ' ] ;
可以使用header()语句向http响应头写入信息;
http的请求方式有两种,GET请求和POST请求;从安全性而言,GET请求会显示在地址栏上,相比POST而言更不安全;GET请求处理速度更快,但是只可以处理2K以内的数据,多数用于查数据,而POST虽相对较慢但不限制资源大小,多数用于增、删、改;
$_GET :可传输多个参数,eg:http://xxx/xxx.php?字段名=参数&字段名=参数;使用empty($_GET('字段名'))验证是否接收到参数;
$_POST :用于传递数据,多数用于增删改;在php.ini文件中关闭register_globals设置,防止SQL注入;
简单的防盗链技术:
if( isset ( $_SERVER[ ' HTTP_REFERER' ] ) ){ //这条语句判断HTTP协议里是否有REFERER值;
if( strpos ( $SERVER[ ' HTTP_REFERER' ] ,“ http://页面主址 ” ) == 0 ){ //这条语句判断REFERER值是否从本网站链接进来;
echo 显示信息 ;
}else{
header( " Location: 警告页面 " ); //如进入else语句则说明该用户是盗链过来的,跳转到警告页面;
}
}else{
header( " Location: 警告页面 " );
}
http协议以及防盗链技术的更多相关文章
- php笔记05:http协议中防盗链技术
倘若我们自己在电脑上写了一个网站文件(可以是html,php文件等等),但是只希望本机可以访问这个文件,不希望别的电脑访问就需要这里的防盗链技术 1.我们在本地写了一个import.php文件: 而且 ...
- 防盗链技术终极解决方案(squid+cookie)
防盗链技术现状:1.通过识别Referer确认请求来源页面2.Apache,squid等都能对Referer进行识别3.通过ActiveX显示的内容不向服务器提供Referer Header(例如,F ...
- php破解防盗链技术
php破解防盗链技术 发送http请求 构造referer信息 在Http协议中,头信息里,有一个重要的选项: Referer Referer: 代表网页的来源,即上一页的地址 具体方法http.cl ...
- php防盗链技术
在Http协议中,头信息里,有一个重要的选项: Referer Referer: 代表网页的来源,即上一页的地址 如果是直接在浏览器上输入地址,回来进来,则没有Referer头. 这也是: 为什么服务 ...
- [php]referer应用--http防盗链技术
1.防盗链的理解 所谓防盗链是防止其他的网站引用自己网站的资源连接,比如图片.视频等等,但是并不会阻碍从自己网站上享受资源的用户,这就要求能够将其他网站的连接请求阻止 2.防盗链的原理 其实从自己网站 ...
- JavaWeb学习记录(二)——防盗链技术
public class TestServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpSer ...
- PHP HTTP协议:防盗链
test.html:主界面 <html> <head> <meta http-equiv="content-type" content="t ...
- Java防盗链机制
对于防盗链技术,网上提供了很多很多的相关技术,但是不是特别复杂就是效果不好. 这里在网上找到一种思路,就是关于HTTP协议响应头中包含的Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可 ...
- 防盗链&CSRF&API接口幂等性设计
防盗链技术 CSRF(模拟请求) 分析防止伪造Token请求攻击 互联网API接口幂等性设计 忘记密码漏洞分析 1.Http请求防盗链 什么是防盗链 比如A网站有一张图片,被B网站直接通过img标签属 ...
随机推荐
- 深入理解DIP、IoC、DI以及IoC容器(转载)
<转载的这个up的其他的文章也很nice> 这几个词第一眼看,懵逼,第二眼看,更特么懵逼..... 面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序. 其中,OOD有一 ...
- Kettle bug收集
20160919(未确定): 加载表的使用"Use batch update for inserts"会引致奇怪的转换失败? 出错日志: - linenr 450000- line ...
- linux+nginx+python+django环境配置
Django是一个开放源代码的Web应用框架,由Python写成,它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的.python+django也是web开发者最受欢迎的框架.今天 ...
- BZOJ 2527 [POI2011]MET-Meteors (整体二分+树状数组)
题目大意:略 洛谷传送门 整体二分裸题 考虑只有一个国家的情况如何处理 对询问数量二分答案,暴力$O(m)$打差分,求前缀和验证,时间是$O(mlogK)$ 如果有$n$个国家,就是$O(nmlogK ...
- 在本地生成ssh-key 免密码远程clone GitLab中的项目到本地
每次项目push.pull都需要输入账号和密码,很烦,方便免密pull与push代码,在本地需要用git bash 创建一个公钥,然后在gitlab中把公钥保存下来. 步骤如下: 1.打开 git b ...
- 【Educational Codeforces Round 48 (Rated for Div. 2) D】Vasya And The Matrix
[链接] 我是链接,点我呀:) [题意] 告诉你每一行.每一列的异或和. 让你求出一个符合要求的原矩阵. [题解] 显然应该有 a1^a2^....^an = b1^b2^....^bn 也即两边同时 ...
- jQuery(基础dom及css操作)
设置元素内容 元素属性操作 ---------- 元素样式操作 ---------------- 对象数组的遍历 测试代码: $(function () { var v=$('div').css([' ...
- LoadRunner性能测试-下载文件脚本
Action() { intflen; //定义一个整型变量保存获得文件的大小 longfiledes; //保存文件句柄 charfile[]="\0"; //保存文件路径及文件 ...
- POJ 1950
直接DFS,因为实在没想到什么剪枝了... 注意一点是,10.11使用的是1011哦 #include <iostream> #include <cstdio> #includ ...
- Wing IDE配置空格取代tab缩进+护眼背景色
打开Wing IDE后,进入"编辑"列的"偏好设置"页面,如图1所看到的: 图1 设置用4个spaces取代tab, 如图2所看到的 图2 设置保护眼睛的绿色, ...