Chaos1ee blog

chaos1ee
Written by@chaos1ee
Frontend developer

GitHub

CSRF攻防

概念 Cross-Site Request Forgery(跨站伪请求)发生在第三方网站,主要的原理是借助浏览器获取用户凭证(cookie),然后向试图侵入的网站发起请求。 举个例子: 用户在浏览器上登录了 A 网站,A 网站的服务器验证通过后下发 cookie,随后浏览器将 cookie 保存下来,并在发现有发往 A 网站的请求时自动在请求上携带 cookie。此时用户在同一个浏览器上不经意打…

Github Actions

Github Actions 介绍 Github Actions 是由 Github 推出的持续集成工具,它可以为开发者提供构建自动化 workflow 的新方式,且它是事件驱动的。 Github Actions 中的一些重要概念 workflow workflow 是用户添加到仓库中的自动化程序,它由一个或多个 job 组成,能够被各种事件触发。 event event 指的是特定的可以触发…

在Angular中自定义Validator

在 angular 中给表单校验的方式有多种: 指令的方式,继承 Validator、AsyncValidator 类 定义 Validator 的衍生类,为该类定义新的校验方法 给 FormBuilder 传递 ValidatorFn 类型的参数 今天我们来介绍一下实现表单校验。 同步的表单校验器 异步的表单校验器 参考: https://angular.io/api/forms/AsyncV…

【译】讲解Angular变更检测

作者:PascalPrecht 原文地址:https://blog.thoughtram.io/angular/2016/02/22/angular-2-change-detection-explained.html 原文相关的资源可见: slides: https://pascalprecht.github.io/slides/angular-2-change-detection-explai…

HTTP协议

HTTP 什么是 HTTP HTTP(Hypertext Transfer Protocol),它是构建于 TCP/IP 协议的应用层协议,默认端口号 80,且是无连接无状态的。 HTTP 报文构成 HTTP 协议以 ASCII 码传输,请求报文分为请求行、请求头部、空行、请求数据,响应报文分为状态行、消息报头、响应正文。 常见的请求方法 GET、POST、UPDATE、DELETE、PATCH…

HTTPS加密解密原理

什么是 SSL ? 维基百科释义: SSL(Secure Scokets Layer,安全套接层),及其继任者传输安全层(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。 简而言之,ssl 是一项保证互联网连接安全的标准技术,它可以保护系统之间传输的敏感数据。 SSL 的作用 信息明文传输带…

Delaying a throw

问题 使用 Observable 数据时,不能直接使用 delay、delayWhen 等操作符延迟抛出错误,因为直接抛出的错误会被 catchError 操作符或 error callback catch 到,从而跳过延迟操作符。 解决方式 伪代码 操作符 materialize materialize 把 next、error、complete 转化为 Observable Notifica…

在Chrome绕开证书问题访问网页

当我们在 chrome 上访问网页遇到证书问题的时候一般可以通过两种方式解决。 1.直接在页面输入“thisisunsafe”即可访问 参考:https://podtech.io/os/mac-osx/chrome-catalina-certificate-issue/ 2.在本机上信任证书 在 chrome 上访问网站的时候遇到以下问题,通过“NET::ERRCERTREVOKED”(证书被撤…

2018年终总结

时光飞逝,不知不觉中 2018 年已经过去了。今年上半年的时候,我还沐浴在广州温暖和煦的阳光中,没想到下半年我就处在了天寒地冻的北京。回首过去的这一年,有收获的喜悦,也有遭遇挫折时的颓废疲惫;既体会过进入新环境时的新鲜感,也体会到了融入新团队、接受新的工作方式的不易。 管理大师查尔斯.汉迪提出过一个理论叫做:第二曲线。 它说的是任何一条增长曲线都会划过抛物线的顶点,想要持续发展,就必须开始一条新…

【数据结构与算法JavaScript实现】栈

栈(stack) 栈是一种遵循后进先出(LIFO)原则的有序集合。新添加或待删除的元素都保存在栈的同一端,称作栈顶,另一端就叫做栈底。在栈里,新元素都靠近栈顶,旧元素都靠近栈底。 分步实现 创建栈 先声明一个类: 选择数组来保存栈里的元素: 为栈声明一些方法: push(element(s)): 添加一个或几个元素到栈顶。 pop(): 移除栈顶的元素,同时返回被移除的元素。 peek(): …