บทความทั้งหมด
ใช้ 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) โดยไม่เชื่อมโยงกับ localhost เท่านั้น) ให้เรียกใช้ npx portpreview PORT และลงทะเบียน HTTPS URL สำหรับ webhooks, การเรียกกลับ OAuth และการสาธิต API

ทำไมต้องทันเนลเอ็กซ์เพรส

Express ยังคงเป็นเลเยอร์ HTTP เริ่มต้นสำหรับ Node API และ BFF ผู้ให้บริการการชำระเงิน, เว็บฮุค CRM และเซิร์ฟเวอร์ OAuth จำเป็นต้องมีปลายทาง HTTPS สาธารณะในขณะที่คุณแก้ไขข้อบกพร่องลำดับมิดเดิลแวร์และการแยกวิเคราะห์เนื้อหาดิบในเครื่อง

  • Webhooks เมานต์ express.raw() บนเส้นทาง webhook ก่อน express.json() รายละเอียดใน Express webhook local testing.
  • OAuth ตั้งค่า URI การเปลี่ยนเส้นทางไปยังต้นทางของช่องสัญญาณของคุณ ดู OAuth callback testing.
  • การแชร์ API ให้ทีมมือถือหรือฟรอนต์เอนด์เข้าถึง API ภายในเครื่องของคุณโดยไม่ต้องใช้ VPN ดู share local dev server.

เริ่มต้นอย่างรวดเร็ว

  1. สตาร์ทเอ็กซ์เพรส: node server.js หรือ npm run dev บนพอร์ต 3000
  2. เรียกใช้ npx portpreview 3000.
  3. ทดสอบ GET https://your-tunnel.portpreview.dev/health.
  4. กำหนดค่า webhooks ของผู้ให้บริการเป็น 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 Listen บนอินเทอร์เฟซทั้งหมดตามค่าเริ่มต้น หากคุณเชื่อมโยงอย่างชัดเจน ให้ใช้ '0.0.0.0' เพื่อให้กระบวนการทันเนลสามารถส่งต่อการรับส่งข้อมูลได้

เชื่อถือส่วนหัวของพร็อกซี

ด้านหลังพอร์ต ดูตัวอย่างแอปของคุณเห็น X-Forwarded-Proto: https เปิดใช้งานพร็อกซีที่เชื่อถือได้เมื่อสร้าง URL ที่สมบูรณ์หรือคุกกี้ที่ปลอดภัย:

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 dev ด้วย PortPreview ได้อย่างไร
เริ่มแอป Express.js ของคุณบน localhost (โดยปกติคือพอร์ต 3000) จากนั้นเรียกใช้ npx portpreview 3000 ในเทอร์มินัลอื่น ใช้ HTTPS URL สำหรับ webhooks, OAuth การเปลี่ยนเส้นทาง และการแชร์
ฉันสามารถทดสอบการโทรกลับ OAuth บน localhost ด้วย Express.js ได้หรือไม่
ผู้ให้บริการภายนอกจำเป็นต้องมี URI การเปลี่ยนเส้นทาง HTTPS สาธารณะ ลงทะเบียน URL ช่องสัญญาณ PortPreview ของคุณเป็นการเรียกกลับระหว่างการพัฒนาแทนที่จะเป็น http://localhost
ข้อผิดพลาดในการทันเนล Express.js ที่พบบ่อยที่สุดคืออะไร
การติดตั้ง express.json() ก่อนเส้นทาง webhook จะใช้เนื้อข้อมูลดิบ ใช้ express.raw() เฉพาะบนเส้นทาง webhook ก่อนมิดเดิลแวร์ JSON ส่วนกลาง
การแชร์ URL อุโมงค์ Express.js ปลอดภัยหรือไม่
ปฏิบัติต่อ URL ช่องสัญญาณเหมือนข้อมูลรับรองชั่วคราว แชร์กับผู้ทำงานร่วมกันที่เชื่อถือได้เท่านั้น ปิดใช้งานเมื่อเสร็จสิ้น และไม่เปิดเผยเส้นทางของผู้ดูแลระบบโดยไม่มีการตรวจสอบสิทธิ์ ดูแนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัยของทันเนล localhost