Все статьи
Использование PortPreview с Express.js для HTTPS-туннелей, вебхуков и 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.
  • Быстрый старт

    <ол>
  • Запустите Express: node server.js или npm run dev на порту 3000.
  • Запустите npx portpreview 3000.
  • Тест GET https://your-tunnel.portpreview.dev/health.
  • Настройте веб-перехватчики поставщика на POST https://your-tunnel.portpreview.dev/api/webhooks/....
  • Минимальный экспресс-сервер

    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.
  • Никогда не раскрывайте неаутентифицированные маршруты администратора в общем туннеле.
  • Остановите туннель, когда закончите. См. 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-адреса туннелей как временные учетные данные. Делитесь только с доверенными сотрудниками, отключайте по завершении и никогда не раскрывайте маршруты администратора без аутентификации. См. рекомендации по обеспечению безопасности туннеля localhost.