cookie

前端性能优化

你说的曾经没有我的故事 提交于 2019-12-25 03:51:50
1.  请减少HTTP请求      基本原理:   在浏览器(客户端)和服务器发生通信时,就已经消耗了大量的时间,尤其是在网络情况比较糟糕的时候,这个问题尤其的突出。   一个正常HTTP请求的流程简述:如在浏览器中输入"www.xxxxxx.com"并按下回车,浏览器再与这个URL指向的服务器建立连接,然后浏览器才能向服务器发送请求信息,服务器在接受到请求的信息后再返回相应的信息,浏览器接收到来自服务器的应答信息后,对这些数据解释执行。    而当我们请求的网页文件中有很多图片、CSS、JS甚至音乐等信息时,将会频繁的与服务器建立连接,与释放连接,这必定会造成资源的浪费,且每个HTTP请求都会对服务器和浏览器产生性能负担。   网速相同的条件下,下载一个100KB的图片比下载两个50KB的图片要快。所以, 请减少HTTP请求。    解决办法:   合并图片(css sprites),合并CSS和JS文件;图片较多的页面也可以使用 lazyLoad 等技术进行 优化 。 2.  请正确理解 Repaint 和 Reflow     注:Repaint 和 Reflow 也就是重绘和重排,请允许我在这卖弄下我有限认识的那么几个英语单词...囧    基本原理:   R epaint(重绘)就是在一个元素的外观被改变,但没有改变布局(宽高)的情况下发生,如改变visibility

PHP获取网页内容的几种方法

北战南征 提交于 2019-12-25 02:00:37
方法1: 用file_get_contents以get方式获取内容 <?php $url='http://www.domain.com/?para=123'; $html= file_get_contents($url); echo$html; ?> 方法2:用file_get_contents函数,以post方式获取url <?php $url= 'http://www.domain.com/test.php?id=123'; $data= array('foo'=> 'bar'); $data= http_build_query($data); $opts= array( 'http'=> array( 'method'=> 'POST', 'header'=>"Content-type: application/x-www-form-urlencoded\r\n" . "Content-Length: " . strlen($data) . "\r\n", 'content'=> $data ) ); $ctx= stream_context_create($opts); $html= @file_get_contents($url,'',$ctx); 如果需要再传递cookie数据,则把 'header'=>"Content-type: application/x-www

Nginx与F5会话保持介绍

喜夏-厌秋 提交于 2019-12-25 01:00:19
Nginx是一个很高效稳定的软负载均衡器,最新的版本可以负载均衡HTTP(s),TCP,UDP等多种协议的链接。一般访问量比较大一点的Web站点都会用NGINX做HTTP协议的Web负载均衡,其后端一般是多个PHP或者JAVA中间件。另外NGINX还可以和Keepalived配合防止均衡器的单点故障,这一点要强于F5,A10这一类的硬件负载均衡设备。 但是F5,A10等硬件负载均衡器虽然价格昂贵但是仍然很有市场,其中原因之一就是硬件负载均衡器比Nginx配置简单,具备图形化界面,有图形化的实时监测界面(收费版的Nginx Plux也有这个功能,但是价格更加昂贵)。但是最重要的一点,就是硬件负载均衡器有成熟的会话保持措施,这一点是Nginx的弱点。 Session会话保持机制? 一般来说,我们在java中都通过如下代码进行用户登录后的服务端注册,并且在用户下次请求时无需再登陆一遍,这就是Servlet的Session。 HttpSession session = request.getSession(false); session.setAttribute("data", data); session.getAttribute("data"); 使用了这种Session策略,那么Web容器比如tomcat就为当前用户生成一个SessionID,并且以这个SessionID为索引

彻底理解PHP的SESSION机制

北战南征 提交于 2019-12-25 00:51:25
一、默认机制,用磁盘文件来实现PHP会话。php.ini配置: session . save_handler = files   1、session_start ()     A、 session_start ()是session机制的开始,它有一定概率开启垃圾回收 , 因为session是存放在文件中,       PHP自身的垃圾回收是无效的,SESSION的回收是要删文件的,这个概率是根据php . ini的配置决定的,       但是有的系统是 session . gc_probability = 0 ,这也就是说概率是0,而是通过cron脚本来实现垃圾回收。   session . gc_probability = 1    session . gc_divisor = 1000    session . gc_maxlifetime = 1440 // 过期时间 默认24分钟    //概率是 session.gc_probability/session.gc_divisor 结果 1/1000,    //不建议设置过小,因为session的垃圾回收,是需要检查每个文件是否过期的。   session . save_path = // 好像不同的系统默认不一样,有一种设置是 "N;/path"   //这是随机分级存储,这个样的话,垃圾回收将不起作用,需要自己写脚本

模拟登陆知乎,返回400

江枫思渺然 提交于 2019-12-24 21:08:47
模拟登陆知乎后,跳转到首页,返回400,请求无效,应该是知乎对request请求有做要求。 看了下请求头,主要关注cookie、referer和user_agent(不要问为什么,我看视频的),cookie在scrapy.Request里有单独参数。不管怎样,先测试下: # -*- coding: utf-8 -*- import scrapy,os,re from scrapy.http import Request from mouse import move class ZhihuSpider(scrapy.Spider): name = 'zhihu' allowed_domains = ['zhihu.com'] start_urls = ['http://zhihu.com/'] headers = { # "HOST": "www.zhihu.com", "Referer": "https://www.zhizhu.com", 'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36" } custom_settings = { "COOKIES_ENABLED":

http协议(三)

三世轮回 提交于 2019-12-24 18:19:00
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 3. 深入了解篇 3.1 Cookie和Session Cookie和Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决HTTP无状态的问ti而所做的努力。 Session可以用Cookie来实现,也可以用URL回写的机制来实现。用Cookie来实现的Session可以认为是对Cookie更高级的应用。 3.1.1两者比较 Cookie和Session有以下明显的不同点: 1)Cookie将状态保存在客户端,Session将状态保存在服务器端; 2)Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服 务器。Cookie最早在RFC2109中实现,后续RFC2965做了增强。网络服务器用HTTP头向客户端发送cookies,在客户终端,浏览器解 析这些cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求缚上这些cookies。Session并没有在HTTP的协议中定 义; 3)Session是针对每一个用户的,变量的值保存在服务器上,用一个sessionID来区分是哪个用户session变量,这个值是通过用户的浏览器在访问的时候返回给服务器,当客户禁用cookie时,这个值也可能设置为由get来返回给服务器; 4)就安全性来说

http 请求头的Cookie中的 JSESSIONID 是什么?

北慕城南 提交于 2019-12-24 18:07:56
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> http 请求头的Cookie中的 JSESSIONID 是什么? 这是一个保险措施因为Session默认是需要Cookie支持的。 但有些客户浏览器是关闭Cookie的这个时候就需要在URL中指定服务器上的session标识。 http本身是无session的,无法跟踪客户端的信息,换句话说:http协议不管是谁联接自己。 为了实现session,必须有浏览器支持。浏览器可以用cookie存储session,这是最通用的做法。 但是,如果我自己写一个完全符合http协议的浏览器,但是不配合服务器的session要求,那么服务器就无法产生session。 好在现在的浏览器都支持session要求,即使关闭了cookie,浏览器也会向服务器传递sessionid,这个id是存储在浏览器的内存空间中的,不保存在硬盘cookie中。 在http的报文格式里面cookie和session是在同一个包文位置上的如果ie发现包文里面包含cookie/session的信息的话,他会根据安全级别来决定是否保存相关信息,比如,如果安全机制允许使用cookie那么ie将把cookie的信息保存到临时文件里面,每次在请求服务器文件的时候会把收到的session的信息加入到请求的报文里面,这就是session保存信息的原理。

解决cookie 不能存中文的方案

老子叫甜甜 提交于 2019-12-24 07:18:32
cookie 不支持中文 解决方案非常容易 只需将其UrlEncode 一下即可,读取的时候要UrlDecode 方便起见,来个CookieHelper 类来操作 using System; using System.Collections.Generic; using System.Web; using System.Web.UI; namespace Sheb.Common { public class CookieHelper { /// <summary> /// 增加一个cookie 记录 /// </summary> /// <param name="cookie"></param> public static void AddCookie(HttpCookie cookie) { DateTime dtNow = System.DateTime.Now; DateTime CookieExpries = cookie.Expires; TimeSpan span= CookieExpries - dtNow; cookie.Value = HttpUtility.UrlEncode(cookie.Value); if (span.TotalDays < 0) { cookie.Expires = dtNow.AddDays(1); } HttpContext

xss攻击入门

烈酒焚心 提交于 2019-12-24 07:12:52
xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻击中,通过插入恶意脚本,实现对用户游览器的控制。 xss攻击可以分成两种类型: 非持久型攻击 持久型攻击 下面我们通过具体例子,了解两种类型xss攻击。 1.非持久型xss攻击 顾名思义,非持久型xss攻击是一次性的,仅对当次的页面访问产生影响。非持久型xss攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击目的。 假设有以下index.php页面: <?php $name = $_GET['name']; echo "Welcome $name<br>"; echo "<a href="http://www.cnblogs.com/bangerlee/">Click to Download</a>"; ?> 该页面显示两行信息: 从URI获取 'name' 参数,并在页面显示 显示跳转到一条URL的链接 这时,当攻击者给出以下URL链接: index.php?name=guest<script>alert('attacked')</script> 当用户点击该链接时,将产生以下html代码,带'attacked'的告警提示框弹出: Welcome

第九章 浏览器模型

半世苍凉 提交于 2019-12-24 07:05:07
浏览器环境概述 1. 代码嵌入网页的方法 网页中嵌入JS代码,主要有三种方法: (1)JS标签 <javascript> 有个 type 属性,用来指定脚本类型,老式浏览器用 text/javascript ,新式浏览器用 application/javascript 。 可以用JS标签加载外部脚本,如果脚本文件使用了非英语字符,还应该注明字符的编码 charset="utf-8" 为了防止攻击者篡改外部脚本,JS标签允许设置一个 integrity 属性,写入该外部脚本的Hash签名,用来验证脚本的一致性。 (2)事件属性 网页元素的事件属性(比如onclick和onmouseover),可以写入JS代码。当指定事件发生时就会调用这些代码。 < button id = "myBtn" onclick = "console.log(this.id)" > 点击 < / button > (3)URL协议 在URL位置写入 代码,使用的时候就会执行JS代码。 < a href = "javascript: console.log('Hello')" > 点击 < / a > 2. script元素 2.1 工作原理 正常的网页加载流程是这样的 浏览器一边下载HTML网页,一边开始解析。也就是说不等下载完,就开始解析。 解析过程中,浏览器发现 <script> 元素,就暂定解析