अमान्य होस्ट हैडर जब एनड्रोक रिएक्ट देव सर्वर से कनेक्ट करने का प्रयास करता है


190

मैं एक मोबाइल डिवाइस पर अपने रिएक्ट एप्लिकेशन का परीक्षण करने की कोशिश कर रहा हूं। मैं अपने स्थानीय सर्वर को अन्य उपकरणों के लिए उपलब्ध कराने के लिए एनरोक का उपयोग कर रहा हूं और इसने कई अन्य अनुप्रयोगों के साथ काम किया है। हालाँकि, जब मैं रिएक्ट देव सर्वर से एनड्रोक कनेक्ट करने का प्रयास करता हूं, मुझे त्रुटि मिलती है:

Invalid Host Header 

मेरा मानना ​​है कि प्रतिक्रिया डिफ़ॉल्ट रूप से किसी अन्य स्रोत से सभी अनुरोधों को रोकती है। कोई विचार?

जवाबों:


554

मैं एक समान समस्या का सामना कर रहा हूं और दो समाधान पाया है जो सीधे ब्राउज़र में एप्लिकेशन को देखने के रूप में काम करता है

ngrok http 8080 -host-header="localhost:8080"
ngrok http --host-header=rewrite 8080

8080 को स्पष्ट रूप से बदलें कि आप किस पोर्ट पर चल रहे हैं

यह समाधान अभी भी एक त्रुटि उठाता है जब मैं एक एम्बेडेड पृष्ठ में इसका उपयोग करता हूं, जो प्रतिक्रिया ऐप से बंडल.जेएस को खींचता है। मुझे लगता है कि चूंकि यह हेडहॉल को लोकलहोस्ट पर फिर से लिखता है, जब यह एम्बेडेड है, यह लोकलहोस्ट को देख रहा है, जो ऐप अब चालू नहीं है


12
पहला काफी था
सुधीर

1
मामले में किसी और को इस समस्या में चलाता है: यह काम करता है, लेकिन यह कुकीज़ को गड़बड़ाने लगता है, जिसका अर्थ है कि यह लॉगिन तंत्र और इस तरह से टूट जाता है!
पीडब्लूआई

यह समस्या
एंगुलर

1
-host-headerपोर्ट नंबर से पहले आना चाहिए, तो पहला उदाहरण होना चाहिएngrok http -host-header="localhost:8080" 8080
सीन बीन

1
./ngrok http --host- हैडर = 8080
श्रीजीथ बनाम

5

विकल्प 1

यदि आपको प्रमाणीकरण का उपयोग करने की आवश्यकता नहीं है, तो आप कमांड को ngrok में जोड़ सकते हैं

ngrok http 9000 --host- हेडर = फिर से लिखना

या

ngrok http 9000 --host- हेडर = "लोकलहोस्ट: 9000"

लेकिन इस मामले में प्रमाणीकरण आपकी वेबसाइट पर काम नहीं करेगा क्योंकि एनरोक पुनर्लेखन हेडर और सत्र आपके एनरोक डोमेन के लिए मान्य नहीं है

विकल्प 2

यदि आप वेबपैक का उपयोग कर रहे हैं तो आप निम्नलिखित विन्यास जोड़ सकते हैं

devServer: {
    disableHostCheck: true
}

उस स्थिति में प्रमाणीकरण हेडर आपके ngrok डोमेन के लिए मान्य होगा


1

मैंने इस सेट का उपयोग एक प्रतिक्रिया ऐप में किया है जो काम करता है। मैंने configstrp.js नामक एक विन्यास फाइल बनाई है जिसमें निम्नलिखित शामिल हैं:

module.exports = {
ngrok: {
// use the local frontend port to connect
enabled: process.env.NODE_ENV !== 'production',
port: process.env.PORT || 3000,
subdomain: process.env.NGROK_SUBDOMAIN,
authtoken: process.env.NGROK_AUTHTOKEN
},   }

सर्वर में फ़ाइल की आवश्यकता है।

const configstrp      = require('./config/configstrp.js');
const ngrok = configstrp.ngrok.enabled ? require('ngrok') : null;

और इस तरह से कनेक्ट करें

if (ngrok) {
console.log('If nGronk')
ngrok.connect(
    {
    addr: configstrp.ngrok.port,
    subdomain: configstrp.ngrok.subdomain,
    authtoken: configstrp.ngrok.authtoken,
    host_header:3000
  },
  (err, url) => {
    if (err) {

    } else {

    }
   }
  );
 }

यदि आपके पास एक कस्टम डोमेन नहीं है तो एक उपडोमेन पास न करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.