@types/forwarded
是一个用于 TypeScript 的npm 包,它提供了一个类型化的 Forwarded HTTP Header Parser,使得拥有类型安全的 Forwarded Header 解析成为了可能。在这篇文章中,我们将详细地介绍如何使用 @types/forwarded
包,以及如何从中受益。
Forwarded HTTP Header是什么
HTTP 协议允许在请求头中包含一个称为 Forwardeed Header 的特殊头信息。这个头主要是为了识别 HTTP 请求在经过代理或者负载均衡器时,是由哪一个客户端发出的。Forwarded header 形如:
Forwarded: by=192.0.2.60; for=[2001:db8:cafe::17]:4711; proto=https
这个 header 可以被用于以下场景:
- 代理服务器将请求进一步转发给下一个代理服务器时, 使用
by
参数来指定发送者,例如by=192.0.2.60
. - 请求服务器回应请求给代理时,使用
for
参数来指定请求者,例如for=[2001:db8:cafe::17]:4711
. - 标示被代理的原始请求所用的协议,例如
proto=https
.
如何使用 @types/forwarded
@types/forwarded
是一个支持 TypeScript 的npm 包,可以让我们在 TypeScript 代码中使用 Forwarded
类型和相关的参数来解析 Forwarded header 。下面我们来看看如何使用:
安装
使用以下命令安装 @types/forwarded
:
npm install --save-dev @types/forwarded
引入
在需要用到 Forwarded
的地方,我们可以使用以下语句引入 Forwarded
类型:
import { Forwarded } from '@types/forwarded';
解析 Forwarded header
首先,我们需要定义一个含有 Forwarded header 的请求:
const request = { headers: { forwarded: 'by=192.0.2.60;for=[2001:db8:cafe::17]:4711;proto=https', }, } as IncomingMessage;
然后,我们可以使用 Forwarded.parse
方法来解析 Forwarded header。
const forwarded = Forwarded.parse(request);
这个方法将解析给定的请求对象中的 Forwarded header 并返回一个包含 parse 结果的对象。
Forwarded 类型
使用 Forwarded.parse
方法,我们可以将 Forwarded header 解析为一个对象,可以访问其属性。@types/forwarded
包为我们提供了类型定义。下面是 Forwarded 类型的定义:
-- -------------------- ---- ------- --------- -------------- - --- --------- ---- --------- ----- --------- ------ --------- - ------- ----- --------- - ---- --------- ----- --------- ------ --------- ------- --------- ------------------- ---------------- ------ ---------- --------- ---------- ------ -------------- ---------- - ------- -- - --------- ------- - - ---- ------- - ------ - ---------- -------------- --
其中,ForwardedProps
类型定义了 by
、for
、host
、proto
四个属性的类型,它们分别是字符串数组,代表不同的 Forwarded 值。Forwarded
类型则是 ForwardedProps
的子集类型,代表包含 Forwarded 值的具体对象。by
、for
、host
、proto
四个属性都是可选的,因为这些头信息不一定总是存在的。
示例代码
-- -------------------- ---- ------- ------ - --------------- - ---- ------- ------ - --------- - ---- ------------------- ----- ------- - - -------- - ---------- --------------------------------------------------------- -- - -- ---------------- ----- --------- - ------------------------- ---------------- ------------------ -- ------------- ----------------- ------------------- -- --------------------------- ------------------- --------------------- -- --------
总结
使用 @types/forwarded
可以很方便地解析 Forwarded header,并且在 TypeScript 中具有类型检查的功能,可以帮助我们更加安全地使用 Forwarded header。在我们的代码中,可以使用以上示例代码作为参考。
我们希望本文对您了解 @types/forwarded 的使用有所帮助,也欢迎您在评论区与我们分享您的看法和使用经验。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedc167b5cbfe1ea0611db3