सभी लेख
Express.js के साथ PortPreview — HTTPS टनल, webhook और OAuth
dev stacksExpress.jsNode.jslocal developmentlocalhost tunneling

Express.js ऐप के साथ पोर्टप्रीव्यू का उपयोग कैसे करें

एक्सप्रेस.जेएस ऐप के साथ पोर्टप्रीव्यू का उपयोग करने के लिए, 0.0.0.0 (या app.listen(PORT) केवल लोकलहोस्ट से जुड़े बिना) पर सुनें, npx portpreview PORT चलाएं, और वेबहुक, OAuth कॉलबैक और एपीआई डेमो के लिए HTTPS URL पंजीकृत करें।

सुरंग एक्सप्रेस क्यों

एक्सप्रेस नोड एपीआई और बीएफएफ के लिए डिफ़ॉल्ट HTTP परत बना हुआ है। जब आप मिडलवेयर ऑर्डर और रॉ-बॉडी पार्सिंग को स्थानीय रूप से डीबग करते हैं तो भुगतान प्रदाताओं, सीआरएम वेबहुक और ओएथ सर्वर को एक सार्वजनिक HTTPS एंडपॉइंट की आवश्यकता होती है।

  • वेबहुक। express.json() से पहले वेबहुक पथों पर express.raw() माउंट करें। विवरण Express webhook local testing में.
  • OAuth. रीडायरेक्ट यूआरआई को अपनी सुरंग के मूल स्थान पर सेट करें। OAuth callback testing देखें.
  • एपीआई साझा करना। मोबाइल या फ्रंटएंड टीमों को वीपीएन के बिना आपके स्थानीय एपीआई तक पहुंचने दें। 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. प्रदाता वेबहुक को 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}`);
});

एक्सप्रेस डिफ़ॉल्ट रूप से सभी इंटरफेस पर सुनता है। यदि आप स्पष्ट रूप से बाइंड करते हैं, तो '0.0.0.0' का उपयोग करें ताकि सुरंग प्रक्रिया ट्रैफ़िक को आगे बढ़ा सके।

प्रॉक्सी हेडर पर भरोसा करें

पोर्टप्रीव्यू के पीछे आपका ऐप X-Forwarded-Proto: https देखता है। पूर्ण यूआरएल या सुरक्षित कुकीज़ उत्पन्न करते समय ट्रस्ट प्रॉक्सी सक्षम करें:

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

स्प्लिट फ्रंटएंड के लिए CORS

यदि किसी अन्य पोर्ट पर कोई रिएक्ट या Vue dev सर्वर अलग-अलग सुरंगों के माध्यम से आपके एक्सप्रेस एपीआई को कॉल करता है, तो CORS को स्पष्ट रूप से कॉन्फ़िगर करें:

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

सुरक्षा जांच सूची

  • JSON को पार्स करने से पहले वेबहुक हस्ताक्षर सत्यापित करें।
  • साझा सुरंग पर कभी भी अप्रमाणित व्यवस्थापक मार्गों को उजागर न करें।
  • समाप्त होने पर सुरंग बंद कर दें। देखें tunnel security.

Express documentation मिडलवेयर और रूटिंग को कवर करता है। Start PortPreview free.

अक्सर पूछे जाने वाले प्रश्न

मैं पोर्टप्रीव्यू के साथ Express.js डेव सर्वर को कैसे प्रदर्शित करूं?
अपना Express.js ऐप लोकलहोस्ट (आमतौर पर पोर्ट 3000) पर शुरू करें, फिर दूसरे टर्मिनल में npx portpreview 3000 चलाएँ। वेबहुक, OAuth रीडायरेक्ट और साझाकरण के लिए HTTPS URL का उपयोग करें।
क्या मैं Express.js के साथ लोकलहोस्ट पर OAuth कॉलबैक का परीक्षण कर सकता हूँ?
बाहरी प्रदाताओं को सार्वजनिक HTTPS रीडायरेक्ट URI की आवश्यकता होती है। http://localhost के बजाय विकास के दौरान कॉलबैक के रूप में अपने पोर्टप्रीव्यू टनल यूआरएल को पंजीकृत करें।
सबसे आम Express.js टनलिंग गलती क्या है?
वेबहुक मार्गों से पहले माउंटिंग Express.json() कच्चे शरीर का उपभोग करता है। वैश्विक JSON मिडलवेयर से पहले केवल वेबहुक पथों पर Express.raw() लागू करें।
क्या Express.js टनल URL साझा करना सुरक्षित है?
टनल यूआरएल को अस्थायी क्रेडेंशियल की तरह समझें। केवल विश्वसनीय सहयोगियों के साथ साझा करें, पूरा होने पर अक्षम करें और प्रमाणीकरण के बिना कभी भी व्यवस्थापक मार्गों को उजागर न करें। लोकलहोस्ट सुरंग सुरक्षा सर्वोत्तम अभ्यास देखें।