Усі статті
Використання 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 та зареєструйте URL-адресу HTTPS для вебхуків, зворотних викликів OAuth і демонстрацій API.

Чому тунель Express

Express залишається стандартним рівнем HTTP для Node API і BFF. Постачальникам платіжних послуг, веб-хукам CRM і серверам OAuth потрібна загальнодоступна кінцева точка HTTPS, поки ви локально налагоджуєте порядок проміжного програмного забезпечення та синтаксичний аналіз необробленого тіла.

  • Веб-хуки. Підключіть express.raw() до шляхів веб-хуків перед express.json(). Подробиці в Express webhook local testing.
  • OAuth. Установіть URI перенаправлення на джерело вашого тунелю. Див. OAuth callback testing.
  • Спільний доступ до API. Дозвольте мобільним або інтерфейсним командам використовувати ваш локальний API без VPN. Див. share local dev server.

Швидкий старт

  1. Запустити Express: node server.js або npm run dev на порту 3000.
  2. Запустіть npx portpreview 3000.
  3. Тест GET https://your-tunnel.portpreview.dev/health.
  4. Налаштуйте вебхуки постачальника на POST https://your-tunnel.portpreview.dev/api/webhooks/....

Сервер Minimal 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 dev на іншому порту викликає ваш Express API через окремі тунелі, налаштуйте CORS явно:

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

Контрольний список безпеки

  • Перевірте підписи вебхука перед аналізом JSON.
  • Ніколи не розкривайте неавтентифіковані маршрути адміністратора в спільному тунелі.
  • Зупиніть тунель після завершення. Див. tunnel security.

Express documentation стосується проміжного програмного забезпечення та маршрутизації. Start PortPreview free.

Поширені запитання

Як відкрити сервер розробки Express.js за допомогою PortPreview?
Запустіть програму Express.js на локальному хості (зазвичай порт 3000), а потім запустіть npx portpreview 3000 в іншому терміналі. Використовуйте URL-адресу HTTPS для вебхуків, переспрямувань OAuth і спільного використання.
Чи можу я протестувати зворотні виклики OAuth на локальному хості за допомогою Express.js?
Зовнішнім постачальникам потрібен публічний URI перенаправлення HTTPS. Зареєструйте свою URL-адресу тунелю PortPreview як зворотний виклик під час розробки замість http://localhost.
Яка найпоширеніша помилка тунелювання Express.js?
Монтування express.json() до того, як маршрути вебхука споживають необроблене тіло. Застосовуйте express.raw() лише до шляхів вебхука перед глобальним проміжним програмним забезпеченням JSON.
Чи безпечно ділитися URL-адресою тунелю Express.js?
Розглядайте URL-адреси тунелів як тимчасові облікові дані. Діліться лише з довіреними співавторами, вимикайте, коли закінчите, і ніколи не розкривайте маршрути адміністратора без автентифікації. Перегляньте найкращі методи безпеки тунелю локального хосту.