NodeJS 解析 GET 请求 url 字符串

本文讨论了NodeJS中使用`url.parse`方法存在的安全问题,因其不符合URL标准而被弃用。推荐使用`URL`类来正确解析GET请求的URL字符串。文章提供了一个简单的代码示例,并推荐了一个名为Body-Data的开源库,用于方便地获取POST和GET请求的参数。

前言

原文: https://blog.imlete.cn/article/Parse-get-url-string.html

封装开源地址: Body-Data

当你使用querystring.parse()或者是url.parse()时会得到一个警告@deprecated — since v11.0.0 - Use the WHATWG URL API.

由于 url.parse() 方法使用一种宽松的非标准算法来解析网址字符串,因此可能会引入安全问题
具体来说,已经确定了主机名欺骗以及用户名和密码处理不当的问题

url.parse()v11.0.0开始被打上@deprecated注解(也不知道叫做注解合不合理,可能是 java 写多了吧),在v16.0.0后被完全移除,同时还一并移除的有url.format() url.resolve()

/**
 * 在 querystring 的 TS 源码开头已经被打上了 @deprecated 具体说明时候被完全移除目前还不得而知
 * 部分注释已被我被删除
 * @deprecated Legacy
 * @see [source](https://github.com/nodejs/node/blob/v17.0.0/lib/querystring.js)
 */
declare module "querystring" {
   
   }
declare module "url" {
   
   
  /**
   * 在 url 的 TS 源码里 parse() 已经被打上了 @deprecated 从v11.0.0开始,到v16.0.0被移除
   * 部分注释已被我被删除
   * @since v0.1.25
   * @deprecated Legacy: Use the WHATWG URL API instead.
   * @param urlString The URL string to parse.
   * 部分注释已被我被删除
   */
  function parse(urlString: string): UrlWithStringQuery;
}

为什么?

这是因为 nodejs 的url.parse方法采用的传统的urlObject,不符合URL 标准,因此被弃用

WHATWG(Web Hypertext Application Technology Working GroupWeb 超文本应用程序技术工作组)

使用 URL

使用 URL 类对 url 进行操作,详细文档见(可将域名后的 org 改为 cn 看中文文档)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值