Jiananshi's Blog

HSTS 是什么

网站开启 HTTPS 之后,通常我们希望将 80 端口通过 HTTP 协议访问的流量也导到 HTTPS 443 端口,自此在服务或站点上就不用为劫持和中间人费心了。 要做到这点很简单,在服务器上将 80 端口的请求 302 到 443 端口即可: 12345678910server { listen 80; server_name shijianan.com www.s......

HTTPS 证书原理

大家都说 HTTPS 传输是安全的,因为是基于 SSL 的,不过无论是基于任何协议,都有可以被中间人(MITM)攻击,甚至上一篇文章的代理也可以称做是中间人,因此 HTTPS 还涉及到了一个概念:证书。 访问一个支持 https 的网站即可查看它的证书信息: 证书是由 CA 颁发的,这套体系是基于公私钥,通常浏览器内部会内置合法流行的 CA 公钥,而私钥自然是存在服务器端。证书的签发和验证......

使用 Nginx 搭建一个透明的 HTTPS 代理

前几天看到一个观点「不用 HTTPS 的网站都是耍流氓」,话说的虽然激进了点,但现在不支持 HTTPS 网站的稀有程度堪比 🐼。很多博主通过 hexo 把博客 host 在 Github Pages 服务上,github.io 本身是有证书的,所以访问 yourname.github.io 是有 HTTPS 认证的,这样如果用自己的域名就没法进行 HTTPS 认证了,这篇文章主要说下我是......

async/await 的常见问题

在 Nodejs 中编写异步代码一直饱受诟病,基于回调函数的原理很容易写出 “箭头型” 代码,有的人甚至因此对 node 产生了阴影。在那之后相继出现 Promise,Generator 和 async/await 试图从语法层面解决这一问题,自 Nodejs 7 中原生支持 async/await 后大部分 nodejs 开发者应该都在用了,本篇文章我们来探讨一些在使用 async/aw......

zIndex 的层叠上下文

上一篇字儿少了点,再写一篇吧 这篇文章想写一下工作中遇到过的一个问题,也是这个博客少有的 CSS 相关文章… 我考虑过为什么 CSS 相关的内容较少,原因主要是日常开发中对 CSS 的关注远不如 JS,而且随着浏览器发展,兼容性这个话题越来越薄弱了。当然,最主要的原因是我 CSS 不好 🤗。 浏览器的布局按照从左到右,从上到下的顺序排列,在使用了 position 或者 float 之......

HTTP 缓存失效的计算

HTTP 1.1 中要求服务端为每个请求设置一个 Date 响应头,表示这个资源生成的时间。当从缓存中获取资源时,HTTP 1.1 会在每个资源上设置 Age 头,它的值是一个数字,表示资源已经存在的时间(或是距离上一次同服务器验证有效性的时间) 下图是我在百度贴吧的请求里截了张图: 根据前文提到的信息,这个资源的创建时间是 2017 年 5月 25 日 00:24:14,资源存活时间是......

Console in Nodejs

在 JS 中 console 的作用类似其他语言的 print、echo,在开发调试过程中常常会用到。上周在工作中用 console 调试代码的时候遇到了 console 在 Nodejs 中一个神奇的行为,这里记录下。 在一段业务逻辑中我拿到了数据库中的一条记录,类似: 12345var record = { id: 1, name: 'ymy', weight: 49&......

JS 中参数的传递方式

提到 Javascript 参数的传递方式,大部分稍微有点经验的人都能说出有按值和按引用传递,基础类型数据按值传递,Object 按引用传递,比如下面的代码: 1234567function parse(raw) { raw = 10;}var num = 5;parse(num);num // 5 由于基础类型按值传递,所以函数 parse 并不会改变外面的 num ......

「译」That's so fetch!

记得去年看到过 @sodatea 跟人讨论时说:「Fetch 并不仅仅是 XHR 包了一层 Promise 而已」,我在后面很长一段时间里一直不解其意,直到后来对 Stream 有所了解并阅读完这篇文章后才体会到个中精妙。Stream 是我非常希望学习掌握的技术之一,不出意外后面几篇文章都会是关于 Stream(流)的。另外博客换了新主题,被某人说不如之前好看,果然美感是需要培养的呀 ╮(......

记一次用 MutationObserver debug 的经历

上篇文章在创建 Microtask 中提到了 MutationObserver 的回调函数会创建一个 microtask,很巧的是这周刚好用上了这个 API 并且快速的解决了一个很诡异的问题。 有天下午上班间隙被叫去看一个问题,一个 Node 节点在添加新的 Node 之后它的子节点依然是空的,在检查了拼写、时序等问题后还是没有头绪,这时获取到一个信息:“如果把 DOM 插入操作放到 s......