所有文章
将 PortPreview 与 Express.js 配合用于 HTTPS 隧道、Webhook 和 OAuth
dev stacksExpress.jsNode.jslocal developmentlocalhost tunneling

如何将 PortPreview 与 Express.js 应用程序一起使用

要将 PortPreview 与 Express.js 应用程序一起使用,请监听 0.0.0.0(或 app.listen(PORT),仅绑定到本地主机),运行 npx portpreview PORT,并注册 Webhook、OAuth 回调和 API 演示的 HTTPS URL。

为什么选择隧道快车

Express 仍然是 Node API 和 BFF 的默认 HTTP 层。当您在本地调试中间件订单和原始正文解析时,支付提供商、CRM Webhook 和 OAuth 服务器需要公共 HTTPS 端点。

快速启动

  1. 启动 Express:端口 3000 上的node server.jsnpm run dev
  2. 运行npx portpreview 3000
  3. 测试GET https://your-tunnel.portpreview.dev/health
  4. 将提供商 Webhook 配置为 POST https://your-tunnel.portpreview.dev/api/webhooks/...

最小 Express 服务器

import express from 'express';

const app = express();
const PORT = process.env.PORT ?? 3000;

app.get('/health', (_req, res) => res.json({ ok: true }));

app.listen(PORT, () => {
  console.log(`Listening on http://localhost:${PORT}`);
});

Express 默认情况下侦听所有接口。如果显式绑定,请使用'0.0.0.0',以便隧道进程可以转发流量。

信任代理标头

在 PortPreview 后面,您的应用程序会看到 X-Forwarded-Proto: https。生成绝对 URL 或安全 cookie 时启用信任代理:

app.set('trust proxy', 1);

用于分割前端的 CORS

如果另一个端口上的 React 或 Vue 开发服务器通过单独的隧道调用您的 Express API,请显式配置 CORS:

import cors from 'cors';
app.use(cors({ origin: process.env.FRONTEND_TUNNEL_URL }));

安全清单

  • 在解析 JSON 之前验证 Webhook 签名。
  • 切勿在共享隧道上公开未经身份验证的管理路由。
  • 完成后停止隧道。参见tunnel security

Express documentation涵盖中间件和路由。 Start PortPreview free

常见问题

如何使用 PortPreview 公开 Express.js 开发服务器?
在本地主机(通常是端口 3000)上启动 Express.js 应用程序,然后在另一个终端中运行 npx portpreview 3000。使用 HTTPS URL 进行 Webhook、OAuth 重定向和共享。
我可以使用 Express.js 在 localhost 上测试 OAuth 回调吗?
外部提供商需要公共 HTTPS 重定向 URI。在开发过程中将您的 PortPreview 隧道 URL 注册为回调,而不是 http://localhost。
最常见的 Express.js 隧道错误是什么?
在 webhook 路由之前挂载 express.json() 会消耗原始主体。仅在全局 JSON 中间件之前的 Webhook 路径上应用express.raw()。
共享 Express.js 隧道 URL 是否安全?
将隧道 URL 视为临时凭证。仅与受信任的协作者共享,完成后禁用,并且切勿在未经身份验证的情况下公开管理路由。请参阅本地主机隧道安全最佳实践。