टनलिंग के माध्यम से इंटरनेट पर लोकलहोस्ट को एक्सपोज़ करना (एनग्रोक का उपयोग करके): एचटीटीपी त्रुटि 400: खराब अनुरोध; मेजबान का नाम अमान्य


210

प्रश्न के पिछले संस्करणों से, यह है: स्थानीय होस्ट के बजाय आईपी पते के साथ वेबसाइट ब्राउज़ करें , जो कि मैंने अभी तक क्या किया है, इसकी बहुत अधिक रूपरेखा है ... मुझे स्थानीय आईपी काम कर रहा है। तब मुझे एनक्रोच मिला, और जाहिर है मुझे आईपी के माध्यम से कनेक्ट करने की आवश्यकता नहीं है।


मैं जो करने की कोशिश कर रहा हूं वह स्थानीयहोस्ट पर चलने वाली मेरी वेबसाइट को इंटरनेट पर उजागर कर रहा है। मुझे एक उपकरण मिला जो ऐसा करेगा: ngrok।

विजुअल स्टूडियो में वेबसाइट चलाने पर, वेबसाइट लोकलहोस्ट / पोर्ट # पर शुरू होती है। मैं कमांड लाइन में "ngrok http port #" कमांड चलाता हूं। सब कुछ ठीक लगने लगता है। मैं कुछ URL उत्पन्न करता हूं, और ngrok निरीक्षण url (लोकलहोस्ट: 4040) काम करता है।

एकमात्र समस्या यह है कि जब मैं जनरेट किए गए URL पर जाता हूं, तो मुझे HTTP त्रुटि 400: खराब अनुरोध अमान्य होस्टनाम मिलता है। जब मैं "ngrok http गलत नंबर #" चलाता हूं, तो यह एक अलग त्रुटि है, जो एक होस्ट है जिसे त्रुटि नहीं मिली है ... इसलिए मुझे लगता है कि कुछ अच्छा हो रहा है। मैं अभी नहीं बता सकता ...

क्या कोई ऐसा कदम है जो मैं अपनी साइट को टनलिंग सेवा के माध्यम से इंटरनेट पर उजागर करने से चूक रहा हूं? अगर वहाँ है, तो मैं इसे ngrok प्रलेखन में नहीं ढूँढ सकता।

जवाबों:


564

इस समस्या का समस्या निवारण के साथ निवारण करें। असंगत शब्दों में, कुछ अनुप्रयोगों को गुस्सा आता है जब उन्हें उम्मीद से अलग होस्ट हेडर दिखाई देता है।

निम्नलिखित कमांड को चलाने से समस्या ठीक होनी चाहिए:

ngrok http [port] -host-header="localhost:[port]"

3
धन्यवाद। मैंने पहले डेविन रेडर के निर्देशों का यहां विस्तार से पालन किया, लेकिन अब यह इस तरह से आसान हो गया है। twilio.com/blog/2014/03/…
sobelito

यदि आप ApplicationHost.config (vs2015 / iisexpress) के लिए एक और बाध्यकारी जोड़ने में समस्या कर रहे हैं तो यह समाधान भी काम करता है। आपको इस उत्तर का उपयोग करने के लिए एक जोड़ने की आवश्यकता नहीं है। अंत में, यदि आपने हर बार पते बदलने से बचने के लिए एक कस्टम डोमेन के लिए भुगतान किया है तो उपरोक्त उत्तर के लिए -subdomain = mysubdomain जोड़ें।
trevorc

4
यह पर्याप्त नहीं बढ़ा सकते हैं! अपने IISExpress बाइंडिंग और नेटवर्क सेटिंग्स को हैक करने के लिए सभी जटिल और छोटी गाड़ी के निर्देशों के लिए, यह मक्खन के माध्यम से गर्म चाकू की तरह इसे काटता है।
नील लैसलेट

19
जब स्थानीय http के बजाय https पर होता है तो उपरोक्त कार्यों की यह भिन्नता:ngrok http https://localhost:44362 -host-header="localhost:44362"
Jsinh

1
वाह, मैंने लगभग 2 घंटे बर्बाद कर दिए हैं। मेरी एकमात्र समस्या यह थी कि मैं https-in -host-header जोड़ रहा था। इस तरह: ngrok http https://localhost:44392 -host-header="https://localhost:44392" दूर करने के लिए https: // से -host- हेडर पैरामीटर मेरी समस्या हल कर दी। धन्यवाद
डेव

48

निम्नलिखित आदेश समस्या को ठीक करेगा

ngrok http -host-header=localhost 8080

2
यदि ASP.NET कोर का उपयोग कर रहे हैं, तो आपको app.UseHttpsRedirection()307 अस्थाई पुनर्निर्देशन से बचने के लिए अपने स्टार्टअप वर्ग में भी टिप्पणी करनी चाहिए ।
मार्क जी

39

यह मेरे लिए काम नहीं किया। आप निम्नलिखित कर सकते हैं:

IIS एक्सप्रेस के लिए

वीएस 2015 में: .vs\config\applicationhost.configअपने प्रोजेक्ट में फ़ोल्डर पर जाएं

वीएस 2013 और उससे पहले में: पर जाएं %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config

वह बंधन खोजें जो कहता है:

<binding protocol="http" bindingInformation="*:5219:localhost" />

मेरे लिए यह 5219 पोर्ट पर चलने वाला प्रोजेक्ट था

इसे बदलो

  <binding protocol="http" bindingInformation="*:5219:" />

IIS Express अब उस पोर्ट पर आने वाले सभी कनेक्शनों को स्वीकार कर लेगा।

नुकसान: आपको IIS एक्सप्रेस को व्यवस्थापक के रूप में चलाने की आवश्यकता है।

या आप Ngrok में होस्ट हेडर को फिर से लिख सकते हैं:

ngrok.exe http -host-header=rewrite localhost:5219

यह शीर्ष लेख को फिर से लिखने के लिए सही तरीका है। अन्य जवाबों में से किसी ने भी काम नहीं किया। पहले से ही IIS को किसी भी होस्टनाम के लिए सेट किया गया था, लेकिन -होस्टर-हेडर = "लोकलहोस्ट: 8892" का उपयोग करते समय एनकाउंटर ने "होस्टनाम अमान्य" लौटा दिया, हालांकि इस पुनर्लेखन संस्करण ने तुरंत काम किया।
तेयथ


0

मेरे लिए सबसे आसान बात आईसेप्सएक्स-प्रॉक्सी + एनरोक का उपयोग करना था ।

पहले मैं iisexpress-proxynpm के साथ विश्व स्तर पर स्थापित करता हूं

npm install -g iisexpress-proxy

फिर मैंने इसके साथ अपनी लोकलहोस्ट को प्रॉक्सी किया। उदाहरण के लिए कहो कि मेरी साइट चल रही है 3003

iisexpress-proxy 3003 to 12345 कहाँ पे 12345नया http पोर्ट मैं से प्रॉक्सी करना चाहता हूँ

फिर मैं उस पर एनक्रोच चला सकता हूं।

./ngrok.exe http 12345

यह सिर्फ काम करता है! 😃

लेकिन मुझे लगता है कि यह केवल साथ काम करता है http। अभी मैं httpsपरीक्षण करने के लिए उपयोग नहीं करता, लेकिन भले ही यह काम करता हो, आमतौर पर यह हमेशा की तरह बहुत काम आता है।


-7

कदम।

  1. अपने कंसोल पर ngrok.exe डायरेक्टरी से कमांड चलाएँ। ngrok http पोर्ट यानी ngrok http 80 https://www.screencast.com/t/oyuEPlR6Z सेट

  2. Ngrok अपने अनुप्रयोग के लिए यूआरएल।

यह आपके आवेदन के लिए एक सुरंग बनाएगा।

धन्यवाद ।

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