PostMan加载三方JS

PostMan加载三方JS

1. 背景

在Postman中做接口测试时,需要使用第三方js包或者自己封装的js工具处理接口参数.此时需要在执行脚本前加载外部js文件
,并且注入运行环境.目前动态执行js文件,可以使用eval或者使用 new Function()方式加载.这里优先考虑第二种方式.
以下介绍四种方法

  • 通过集合参数或者环境变量添加
  • 通过请求响应添加
  • 直接在脚本中添加
  • 通过pm.require添加npm包

动态添加的脚本如果不能访问注入的对象,可以在调用前添加this.xxx试下.

以下测试代码,均在Pre-request Script页签中执行

测试方式为在在Postman中添加一个GET请求

请求地址为https://www.小游戏.地心侠士.com

虽然地址不存在,但是依然可以测试脚本加载情况.

2. 通过参数添加

/* by yours.tools - online tools website : yours.tools/zh/generateethwallets.html */
(function(){
var script = pm.collectionVariables.get("dayjs_code");
(new Function(script))();
console.log("加载dayjs后,获取当前时间: "+ dayjs().format('YYYY-MM-DD HH:mm:ss SSS')) 
})()  

在左下角的Console面板中输出的内容如下:

/* by yours.tools - online tools website : yours.tools/zh/generateethwallets.html */
加载dayjs后,获取当前时间: 2025-12-30 19:14:14 949
GET https://www.小游戏.地心侠士.com

3. 通过网络添加

pm.sendRequest("https://cdn.bootcdn.net/ajax/libs/dayjs/1.11.18/dayjs.min.js",(error,resp)=>{
   let script = resp.text();
   (new Function(script))()
   console.log("加载dayjs后,获取当前时间: "+ dayjs().format('YYYY-MM-DD HH:mm:ss SSS'))    
})

在左下角的Console面板中输出的内容如下:

GET https://cdn.bootcdn.net/ajax/libs/dayjs/1.11.18/dayjs.min.js

加载dayjs后,获取当前时间: 2025-12-30 19:05:09 506

GET https://www.小游戏.地心侠士.com

4. 使用eval方式加载

以上的示列,都是是通过Function()方式加载.使用eval方式,参考如下

(function(){
var script = pm.collectionVariables.get("dayjs_code");
eval(script)
console.log("使用eval初始脚本,获取当前时间: "+ dayjs().format('YYYY-MM-DD HH:mm:ss SSS')) 
})()

在左下角的Console面板中输出的内容如下:

使用eval初始脚本,获取当前时间: 2025-12-31 09:26:56 460
GET https://www.小游戏.地心侠士.com

5. 直接复制到脚本中

直接下载dayjs.min.js文件,复制到Pre-request Script内容区域.然后再写具体测试脚本

这里需要注意的是,在调用是需要使用this.dayjs(),不能直接使用dayjs(),可能和postman执行环境没有window对象有关

console.log("加载dayjs后,获取当前时间: "+this.dayjs().format('YYYY-MM-DD HH:mm:ss SSS')) 

在左下角的Console面板中输出的内容如下:

加载dayjs后,获取当前时间: 2025-12-30 19:21:46 064
GET https://www.小游戏.地心侠士.com

6. 使用pm.require添加npm包

在高级版本中,或者直接在官网云环境可以是使用

const dayjs = pm.require('npm:dayjs@1.11.19');
console.log("加载dayjs后,获取当前时间: "+ dayjs().format('YYYY-MM-DD HH:mm:ss SSS'))

在左下角的Console面板中输出的内容如下:

加载dayjs后,获取当前时间: 2025-12-30 19:33:07 825
GET https://www.小游戏.地心侠士.com

7. 总结及扩展

总之,在postman的沙箱环境中,加载三方JS主要是两个路径

  • 中JS动态执行能力,使用eval(scriptContent)new Function(scriptContent)
  • 使用Postman内置的包管理能力 pm.require('npm:dayjs@1.11.19'); 可能会有版本要求

内置Web Crypto objects对象,比如Crypto CryptoKey SubtleCrypto crypto property

比如,在Postman脚本中,需要实现AES加密代码如下:

var ciphertext = CryptoJS.AES.encrypt('小游戏地心侠士', '微信').toString();
console.log("AES加密内容 "+ ciphertext)

在左下角的Console面板中输出的内容如下:

AES加密内容  U2FsdGVkX1/N/cvcwUkO1F+V66VM/XFfkBnAJUPk20TpE5Db2+H+lSa2xOx1yAeI
GET https://www.小游戏.地心侠士.com

PostMan内置对象参考地址如下:
https://www.cnblogs.com/yfrs/p/19425003/postman_inner_object

原文地址:https://mp.weixin.qq.com/s/EO5lJEskAWGq1DotIVx6Ig

转载请注明来源
作者:杨瀚博
QQ:464884492
<think> 我们正在处理一个关于在Postman加载HTTPS证书的问题。用户之前遇到了SoapUI中模拟HTTPS服务端时的端口绑定问题,现在转向Postman的证书加载操作。根据引用[1],Postman在发送HTTPS请求时可能需要配置证书以避免SSL握手失败。引用[2]则提到与Tomcat建立HTTPS连接时客户端证书的重要性,但我们可以忽略具体证书名称(如"huawei_out"),专注于通用操作方法。 以下是详细步骤: ### Postman加载HTTPS证书的方法 #### 1. **准备工作** - 获取客户端证书:通常为`.p12`或`.pfx`格式(包含私钥),或`.crt`/`.cer`格式(公钥证书)。若服务器要求双向认证(mTLS),则需前者。 - 记录证书密码(如有)。 #### 2. **全局证书配置(适用于所有请求)** - **步骤说明**: 1. 打开Postman → 顶部菜单栏 → **File** → **Settings**。 2. 切换到**Certificates**标签页。 3. 在**Client Certificates**区域点击**Add Certificate**。 4. 填写信息: - **Host**:目标服务器域名或IP(例如`example.com`),支持通配符`*.example.com`。 - **CRT file**:上传公钥证书(`.crt`或`.pem`)。 - **Key file**:上传私钥文件(`.key`),若证书为`.p12`则跳过此步。 - **PFX file**:若使用`.p12`/`.pfx`文件,直接在此处上传并输入密码。 5. 点击**Add**保存。 - **注意**:此配置对所有匹配Host的请求生效。 #### 3. **单请求证书配置(覆盖全局设置)** - **步骤说明**: 1. 在请求编辑界面 → 切换到**Authorization**标签页。 2. 类型选择**Mutual TLS**。 3. 上传文件: - 若使用`.p12`/`.pfx`:选择**PFX File**并上传,输入密码。 - 若使用分离证书:选择**CRT File**和**Key File**分别上传。 4. 保存请求。 #### 4. **验证配置有效性** - 发送请求后检查: - **成功**:响应状态码为`200`/`201`等。 - **失败**:检查Console报错(**View** → **Show Postman Console**): - `UNABLE_TO_VERIFY_LEAF_SIGNATURE` → 证书链不完整,需补充中间证书。 - `CERT_HAS_EXPIRED` → 证书已过期。 - `ERR_SSL_VERSION_OR_CIPHER_MISMATCH` → 服务器协议不兼容(如仅支持TLS 1.3)。 #### 5. **疑难解答** - **证书格式转换**(如需): - `.p12`转`.crt`+`.key`: ```bash openssl pkcs12 -in cert.p12 -out cert.crt -nokeys # 提取公钥 openssl pkcs12 -in cert.p12 -out key.key -nocerts -nodes # 提取私钥 ``` - **禁用SSL验证(临时测试)**: 在**Settings** → **General**中关闭**SSL certificate verification**(不推荐生产环境)。 > **关键原理**:双向认证要求客户端在SSL握手时出示可信证书[^1]。Postman通过上述配置将证书注入TLS连接上下文。 §§相关问题§§ 1. Postman如何管理多个不同域名的HTTPS证书? 2. 如何生成用于本地测试的自签名HTTPS证书? 3. 如何解决Postman中的`UNABLE_TO_VERIFY_LEAF_SIGNATURE`错误? 4. 在Postman中配置证书后请求依然失败的可能原因? 5. 哪些工具可以替代Postman进行HTTPS接口测试? </think> ### 在Postman加载HTTPS证书的完整指南 当测试需要双向认证(mTLS)的HTTPS接口时,Postman加载客户端证书才能成功建立连接。以下是具体操作步骤: --- #### **1. 证书格式准备** - **必需文件**: - 客户端证书(`.crt`或`.pem`格式公钥证书) - 私钥文件(`.key`格式) - 证书密码(如果私钥已加密) - **格式转换**(若只有`.p12/.pfx`): ```bash # 提取公钥证书 openssl pkcs12 -in client.p12 -out client.crt -nokeys # 提取私钥(需输入p12密码) openssl pkcs12 -in client.p12 -out client.key -nocerts -nodes ``` --- #### **2. 全局证书配置(推荐)** 适用于所有发送到特定域名的请求: 1. 打开Postman → **File > Settings > Certificates** 2. 在 **Client Certificates** 区域点击 **Add Certificate** 3. 填写配置: - **Host**:目标域名(如`api.example.com`) - **CRT File**:上传`client.crt` - **Key File**:上传`client.key` - **Passphrase**:输入私钥密码(若有) ![](https://assets.postman.com/postman-docs/certificate-add.png) *图:Postman证书配置界面[^1]* --- #### **3. 单请求证书配置** 针对特定请求临时添加证书: 1. 在请求编辑界面 → **Authorization** 标签页 2. 类型选择 **Mutual TLS** 3. 上传证书文件: - **Certificate File**:选择`.crt`文件 - **Key File**:选择`.key`文件 - **Passphrase**:输入密码 ```plaintext | 配置项 | 说明 | |---------------|--------------------------| | Certificate | 客户端公钥证书 (.crt) | | Private Key | 对应的私钥文件 (.key) | | Passphrase | 私钥解密密码(可选) | ``` --- #### **4. 疑难解答** - **常见错误**: - `EPERM`:证书文件权限问题 → 确保当前用户有读取权限 - `CERTIFICATE_VERIFY_FAILED`:证书链不完整 → 合并中间证书: ```bash cat client.crt intermediate.crt > fullchain.crt ``` - `SSL_ERROR_BAD_CERT_DOMAIN`:域名不匹配 → 检查证书SAN扩展 - **调试工具**: 在Postman控制台(**View > Show Postman Console**)查看详细TLS握手日志 --- #### **5. 证书管理最佳实践** - **环境变量管理**:将证书路径存储为环境变量,实现多环境切换 - **证书轮换**:设置提醒更新过期证书(查看有效期命令): ```bash openssl x509 -in client.crt -noout -dates ``` - **安全存储**:避免将私钥上传到Postman Cloud,使用本地运行模式 > **提示**:对于单向SSL认证(仅服务端证书),只需在**Settings > General**中关闭*SSL certificate verification*即可[^1],但**双向认证必须按上述步骤操作**。 --- ### 相关问题 1. 如何为Postman生成自签名HTTPS测试证书? 2. Postman如何管理多个不同域名的HTTPS证书? 3. 证书过期导致Postman请求失败如何快速检测? 4. Postman中的证书配置与cURL命令如何等价转换? 5. 除了Postman,还有哪些工具支持HTTPS双向认证测试?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值