HTTP缓存代理策略 缓存代理,主要分为两部分,服务端的缓存控制和客户端的缓存控制;客户端的缓存控制由浏览器来实现,而服务端的缓存控制由代理服务器来实现。代理服务器介于浏览器客户端和源服务器之间,相当于一个数据中转站,将未更新可复用的数据缓存起来,以便降低源服务器的并发量。 服务器端缓存控制策略可以同时控制客户端和代理首先总结一下常用的缓存控制属性的含义:服务器端的Cache-Control主要包括以下属性 max 2019-07-27 通信 HTTP
CSRF攻击防范 CSRF(Cross-site request forgery):跨站请求伪造,是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。 CSRF原理:CSRF攻击思想如下: 引用自https://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html CSRF攻击成功的两个必要 2019-07-24 安全 安全
HTTP实现大文件传输原理 业务背景在编写视频播放功能时,没想明白如何实现大体积视频的一边加载一边播放,这里实际上是利用了HTTP所实现的分块传输,也可以称之为断点续传,下面介绍几个涉及到的关键字段。 Transfer-Encoding: chunked对于响应报文,存在两种情况:报文长度已知、报文长度未知;这分别对应这响应头里Content-Length、Transfer-Encoding: chunked这两个互斥的字段 2019-07-16 通信 HTTP
通过a标签的download属性+Blob重命名下载文件 背景:从文件服务器下载文件资源时,通常存储的文件名称都经过二进制转译,导致下载时的文件名为失去语义的二进制字符串。对于定制化的文件服务器可以从后端进行下载重命名,再生成新的下载链接;而对于通用解决方案,可以由前端进行重命名操作。 解决方案:常用的下载方式: <a [href]="download_url" target="_blank"> //或者 window.location.hr 2019-07-06 前端 JavaScript
HTTP概念性总结 工作中几乎每天都在和HTTP协议打交道,但是感觉除了对状态码、请求头、请求体的使用外,对理论及底层协议的了解知之甚少,所有想总结一下HTTP协议的一些概念。 HTTP : Hyper Text Transfer Protocal 超文本传输协议 首先什么是文本?文本最初指报文、文字,如今发展为文字、图片、音频、视频、压缩包等 2019-07-02 通信 HTTP
利用postMessage实现跨源通信 一、业务背景:利用OpenCMS构建一个包含公用页头页脚的容器,中间用iframe标签引入Angular页面(我也不想用iframe这种古董,但是解决方案目前只有这个最合适) 二、引发的问题:众所周知iframe高度自适应问题不是简单一句height:100%就能解决的,尤其是当子页面不断调用接口,页面高度不固定时,需要实时计算子页面的高度。为了解决这个问题,最初我设想的是在父页面通过onload 2019-05-10 前端 HTML5
JS优化技巧总结 1.过滤唯一值ES6 引入了 Set 对象和延展(spread)语法…,我们可以用它们来创建一个只包含唯一值的数组。 const array = [1, 1, 2, 3, 5, 5, 1] const uniqueArray = […new Set(array)]; console.log(uniqueArray); // Result: [1, 2, 3, 5] 在 ES6 之前,获得同样的数组 2019-05-03 前端 JavaScript
JS事件冒泡及阻止 事件冒泡 :当一个元素接收到事件的时候 会把他接收到的事件传给自己的父级,一直到window 。(注意这里传递的仅仅是事件 并不传递所绑定的事件函数;所以如果父级没有绑定事件函数,就算传递了事件 也不会有什么表现 但事件确实传递了) 举个例子,先点击一下父级按钮再点击一下子级按钮,可以发现click事件也被冒泡传递到了它的父级 避免冒泡事件的方法 2019-04-25 前端 JavaScript
Angular生命周期钩子 1.ngOnChanges当 Angular(重新)设置数据绑定输入属性时响应。 该方法接受当前和上一属性值的 SimpleChanges 对象。在 ngOnInit() 之前以及所绑定的一个或多个输入属性的值发生变化时都会调用。 2.ngOnInit在 Angular 第一次显示数据绑定和设置指令/组件的输入属性之后,初始化指令/组件。在第一轮 ngOnChanges() 完成之后调用,只调用一 2019-04-25 前端 Angular
getClientRects() 和 getBoundingClientRect()的区别 简单来说,getClientRects返回的其实是个数组,数组中有很多个类似getBoundingClientRect返回的对象(这样的对象称为TextRectangleList)。getBoundingClientRect返回的永远是最外框框的那个矩形区域相关的坐标偏移对象;而getClientRects是多行文字区域的坐标偏移集合。 例如: 结果为: 2019-04-02 前端 JavaScript