Postman 的 Preview 选项卡在沙箱 iframe 中渲染 HTML,禁用 script、img、link 等标签,导致 JS 不执行、CSS 丢失、资源 404;Raw 显示原始字节流,适合查编码和压缩,Pretty 对 HTML 不格式化;提取 HTML 值须用 cheerio 在 Tests 中解析,不支持伪类和 JS 渲染内容;需真实运行时应保存为 .html 文件用浏览器打开。

Postman 能直接渲染 HTML 响应,但默认不执行 JS、不加载外部资源,且不能点链接跳转——这不是 bug,是沙盒安全限制。
Preview 选项卡为什么显示空白或不完整
Preview 模式在 iframe 沙箱中渲染 HTML,会禁用 script、img、iframe、link rel="stylesheet" 等标签。常见现象包括:
- 页面只显示纯文本,CSS 样式丢失
-
<script></script>标签内容完全不执行(比如登录态判断、动态菜单渲染) - 相对路径的图片或字体 404(因为沙箱没有当前域上下文)
- 使用
window.location或document.cookie的脚本报错
这不是 Postman 故障,而是浏览器对跨源 iframe 的主动防护。若需验证真实渲染效果,应改用浏览器打开响应 URL,或把 HTML 保存为本地文件后双击打开。
Raw 和 Pretty 选项卡对 HTML 响应的区别
Raw 显示原始字节流,适合检查是否被 gzip 压缩、BOM 头是否存在、编码是否为 UTF-8;Pretty 仅对 JSON/XML 自动格式化,对 HTML 不做任何处理——它不会美化缩进,也不会高亮标签。
立即学习“前端免费学习笔记(深入)”;
- 如果你看到
Pretty里 HTML 是挤成一行的,正常。Postman 不解析 HTML 结构 - 想快速定位某个
<input name="token">,直接在Raw视图按Ctrl+F搜索更可靠 - 如果响应头缺失
Content-Type: text/html,Postman 可能误判为二进制,此时Raw里会显示乱码,需手动确认编码
用 cheerio 在 Tests 里提取 HTML 中的值
当需要从 HTML 响应中取值用于后续请求(如提取 csrf_token),必须在 Tests 脚本里用 cheerio 解析,不能依赖 UI 渲染。
- 确保响应是 HTML 文本:用
pm.response.text()获取,别用pm.response.json()(会抛错) - 加载时加
{ xmlMode: false, decodeEntities: true }参数,避免特殊字符解析错误 - 示例提取
<meta name="csrf-token" content="abc123">:
const $ = cheerio.load(pm.response.text(), { xmlMode: false, decodeEntities: true });
const token = $('meta[name="csrf-token"]').attr('content');
pm.environment.set('csrf_token', token);
注意:cheerio 不支持伪类(如 :nth-child)、不执行 JS 生成的内容、也不识别 Vue/React 的绑定语法(如 v-model)。
保存 HTML 响应到本地并手动打开
Preview 不满足需求时,最稳妥的方式是把 HTML 保存下来,在浏览器中真实运行:
- 点击响应右上角
Save Response→Save as file - 保存后扩展名手动改为
.html(Postman 默认无后缀) - 用 Chrome/Firefox 打开该文件,此时 JS、CSS、图片全部可用
- 若页面依赖服务端上下文(如 cookie、Referer),需配合代理或改用浏览器插件重放请求
HTML 解析逻辑越复杂(比如有动态 fetch、Web Component、Shadow DOM),就越难靠 Postman 内置能力覆盖——这时候该让测试回归浏览器环境,而不是硬塞进 cheerio。



















