置顶文章

1.8k 2 分钟

还记得所有 AI 教程必提的「奥卡姆剃刀原则」吗?即:如无必要,勿增实体。这条原则也被收藏,还有一些不太常见的费茨法则、盖尔定律、康威定律等,都被一一收入囊中。

精选分类

文章列表

3.2k 3 分钟

官方文档:https://www.tslang.cn/docs/handbook/decorators.html

这个东西在java里叫注解,不过在ts中,一个装饰器对应一个方法

7.4k 7 分钟

JavaScript 中有许多简写技巧可以缩减代码长度、减少冗余并提高代码的可读性和可维护性。以下是 20 个有效提升效率的 JavaScript 简写技巧,帮助你编写更优雅的代码!

3.5k 3 分钟

# 为什么会有接口安全问题? 在探讨接口安全规范前,我们先来分析一下为什么会有接口安全问题?具体有几种? # http 一个常规 http 的 get 请求: http://api.xx.com/user/getUserInfo?uid=xxx该示例使用的是 get 请求方式,参数过于暴露容易成为攻击对象,造成数据泄漏;即使使用 post 方式,最多也是在地址栏上不可见接口和参数而已,在传输角度来说,它们都属于明文传输,通过抓包的方式可以获得数据报文,进而导致数据泄漏; # https https 协议在 http 的基础上加了一层 ssl...
2.9k 3 分钟

1. 生成随机字符串 当我们需要一个唯一 id 时,通过 Math.random 创建一个随机字符串简直不要太方便噢!!! const randomString = () => Math.random().toString(36).slice(2)randomString() // gi1qtdego0brandomString() // f3qixv40motrandomString() // eeelv1pm3ja# 2.# 转义 HTML 特殊字符 解决 XSS 方法之一就是转义 HTML。 const escape = (str) =>...
4.9k 4 分钟

在前段时间的一次面试中,被问到了一个如标题这样的问题。要想好好地去回答这个问题,这里牵扯到的知识点也是比较多的。

那么接下来这篇文章我们就一点一点开始引出这个问题。

同源策略

在浏览器中,内容是很开放的,任何资源都可以接入其中,如 JavaScript 文件、图片、音频、视频等资源,甚至可以下载其他站点的可执行文件。

但也不是说浏览器就是完全自由的,如果不加以控制,就会出现一些不可控的局面,例如会出现一些安全问题,如:

  • 跨站脚本攻击(XSS)
  • SQL 注入攻击
  • OS 命令注入攻击
  • HTTP 首部注入攻击
  • 跨站点请求伪造(CSRF)
  • 等等……

如果这些都没有限制的话,对于我们用户而言,是相对危险的,因此需要一些安全策略来保障我们的隐私和数据安全。

这就引出了最基础、最核心的安全策略:同源策略。

1.1k 1 分钟

# 啥是时区?

时区是地球上的区域使用同一个时间定义。以前,人们通过观察太阳的外置(时角)决定时间,这就使得不同经度的地方的时间各有不同,为了统一使用同一个时间,就引入了时区的概念。时区通过设立一个标准时间部分地解决了这个问题。世界各国位于地球的不同位置,因此不同国家,特别是东西跨度大的国家日出、日落时间必定有偏差,这些偏差就是时差。

# 表示

协调世界时(UTC)是最主要的世界时间标准,其以院子时秒长为基础,在时刻上尽量接近于格林威治标准时间。协调世界时是世界上调调节时钟和时间的主要标准。如果时间是以协调世界时(UTC)表示,则在时间后面加上 “Z”,“Z” 是协调世界时中 0 时区的标志。UTC 时间也叫祖鲁时间,因为在北约音标字母中用 “Zulu” 表示 “Z”。
UTC 偏移量的表示形式为:±[hh]:[mm]、±[hh][mm] 或者 ±[hh]。比如北京时间比协调世界时(UTC)早八小时,那么应当表示为:UTC+8。

JavaScript 获得当前客户端的时区
对象是 ECMAScript 国际化 API 的一个命名空间,它提供了精确的字符串对比、数字格式化和日期格式化。我们需要使用这个 API 的 DateTimeFormat 对象。具体可以参考:MDN Intl.DateTimeFormat

获得客户端当前时区:

Intl.DateTimeFormat().resolvedOptions().timeZone // 'Asia/Shanghai'

1.7k 2 分钟

// 判断标准:窗口高度 + 滚动条位置 >= 页面高度 /* -------------------------------------------- */ // 原生JS 判断整个文档滚动至底部 window.onscroll = ()=>{ // 窗口高度 var windowHeight = document.documentElement.clientHeight || document.body.clientHeight; // 页面高度 var documentHeight =...
5.4k 5 分钟

navigator 对象包含有关浏览器的所有信息,且支持所有浏览器。

navigator 对象有一个属性为 userAgent,这是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值。所以我们可以通过判断 navigator.userAgent 里面是否包含某些值来判断。