मुझे Cloud9.io पर एक वेबपैक देव सर्वर में अपना रिएक्ट ऐप चलाते समय "अमान्य होस्ट हेडर" संदेश मिल रहा है


176

मैं एक वातावरण के रूप में उपयोग कर रहा हूं, एक Cloud9.io ubuntu VM Online IDE और मैंने इस त्रुटि का निवारण करके केवल वेबपैक देव सर्वर के साथ ऐप चलाने में कमी की है।

मैं इसके साथ लॉन्च करता हूं:

webpack-dev-server -d --watch --history-api-fallback --host $IP --port $PORT

$ IP एक वैरिएबल है जिसमें होस्ट एड्रेस है PORT में पोर्ट नंबर है।

मुझे क्लाउड 9 में एक ऐप को तैनात करते समय इन संस्करणों का उपयोग करने का निर्देश दिया गया है, क्योंकि उनके पास डिफ़ॉल्ट आईपी और पोर्ट जानकारी है।

सर्वर बूट करता है और कोड को संकलित करता है, कोई समस्या नहीं, यह मुझे इंडेक्स फ़ाइल नहीं दिखा रहा है। पाठ के रूप में "अमान्य होस्ट हेडर" के साथ केवल एक खाली स्क्रीन।

यह अनुरोध है:

GET / HTTP/1.1
Host: store-client-nestroia1.c9users.io
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
Accept: 
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
DNT: 1
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: en-US,en;q=0.8

यह मेरा पैकेज है। संदेश:

{
  "name": "workspace",
  "version": "0.0.0",
  "scripts": {
    "dev": "webpack -d --watch",
    "server": "webpack-dev-server -d --watch --history-api-fallback --host $IP --port $PORT",
    "build": "webpack --config webpack.config.js"
  },
  "author": "Artur Vieira",
  "license": "ISC",
  "dependencies": {
    "babel-core": "^6.18.2",
    "babel-loader": "^6.2.8",
    "babel-preset-es2015": "^6.18.0",
    "babel-preset-react": "^6.16.0",
    "babel-preset-stage-0": "^6.24.1",
    "file-loader": "^0.11.1",
    "node-fetch": "^1.6.3",
    "react": "^15.5.4",
    "react-bootstrap": "^0.30.9",
    "react-dom": "^15.5.4",
    "react-router": "^4.1.1",
    "react-router-dom": "^4.1.1",
    "url-loader": "^0.5.8",
    "webpack": "^2.4.1",
    "webpack-dev-server": "^2.4.4",
    "whatwg-fetch": "^2.0.3"
  }
}

यह webpack.config.js है:

const path = require('path');

module.exports = {

  entry: ['whatwg-fetch', "./app/_app.jsx"], // string | object | array
  // Here the application starts executing
  // and webpack starts bundling
  output: {
    // options related to how webpack emits results

    path: path.resolve(__dirname, "./public"), // string
    // the target directory for all output files
    // must be an absolute path (use the Node.js path module)

    filename: "bundle.js", // string
    // the filename template for entry chunks

    publicPath: "/public/", // string
    // the url to the output directory resolved relative to the HTML page
  },

  module: {
    // configuration regarding modules

    rules: [
      // rules for modules (configure loaders, parser options, etc.)
      {
        test: /\.jsx?$/,
        include: [
          path.resolve(__dirname, "./app")
        ],
        exclude: [
          path.resolve(__dirname, "./node_modules")
        ],
        loader: "babel-loader?presets[]=react,presets[]=es2015,presets[]=stage-0",
        // the loader which should be applied, it'll be resolved relative to the context
        // -loader suffix is no longer optional in webpack2 for clarity reasons
        // see webpack 1 upgrade guide
      },
      {
        test: /\.css$/,
        use: [ 'style-loader', 'css-loader' ]
      },
      {
        test: /\.(png|jpg|jpeg|gif|svg|eot|ttf|woff|woff2)$/,
        loader: 'url-loader',
        options: {
          limit: 10000
        }
      }
    ]
  },

  devServer: {
    compress: true
  }
}

मेरे होस्ट सेटअप के कारण वेबपैक देव सर्वर इसे वापस कर रहा है। Webpack-dev-server / lib / Server.js लाइन 60 में। https://github.com/webpack/webpack-dev-server से

मेरा सवाल यह है कि मैं इस चेक को सही तरीके से पास करने के लिए कैसे सेटअप करूं। किसी भी तरह की सहायता का स्वागत किया जाएगा।


लगता है कि समस्या टिप्पणी के दायरे से बाहर है।
इलमीिस्टर

मुझे समझ नहीं आ रहा है कि समस्या कैसे हो रही है। क्या आप मुझे सही दिशा में निर्देशित कर सकते हैं?
Artur विएरा

खैर यह मेरे मामले में पता चला है कि शीर्ष उत्तर ने काम किया है।
मर्मेसेस

जवाबों:


311

समस्या इसलिए होती है क्योंकि webpack-dev-server2.4.4 एक होस्ट चेक जोड़ता है। आप इसे अपने वेबपैक कॉन्फ़िगरेशन में जोड़कर इसे अक्षम कर सकते हैं:

 devServer: {
    compress: true,
    disableHostCheck: true,   // That solved it

 }      

संपादित करें: कृपया ध्यान दें, यह फिक्स असुरक्षित है।

कृपया सुरक्षित समाधान के लिए निम्नलिखित उत्तर देखें: https://stackoverflow.com/a/43621275/5425585


13
यह एक सुरक्षा मुद्दा है। विशिष्ट होस्टनाम की बजाय सार्वजनिक विकल्प का उपयोग करें। अधिक जानकारी के लिए medium.com/webpack/… देखें ।
सिस्टमपैराडॉक्स

5
सार्वजनिक विकल्प अकेले मेरे लिए काम नहीं किया था ... disableHostCheck केवल बात यह है कि इसे हल है: \
davidkomer

मेरे लिए @davidkomer वही। केवल एक चीज जो काम करती है वह है अक्षमहस्तचेक ...
irl_irl

6
अगर आप स्थानीय देव के अलावा किसी अन्य चीज़ के लिए वेबपैक देव सर्वर का उपयोग कर रहे हैं तो यह एक सुरक्षा समस्या है।
एलियनवेबजी

यह मेरे लिए भी काम किया। मेरा मामला यह था कि मैं 192.168.0.106.xip.io पर एक बिटमनी मल्टीसाइट वर्पड्रेस इंस्टाल का उपयोग कर रहा था। क्या अजीब है, मैं अपने पुराने अपाचे लिनक्स पर इस "फिक्स" के बिना ठीक काम करने में सक्षम था। क्या मैं तिलमिलाया नहीं था कि बिटनामी पैकेज को बंद कर दिया गया था कि यह मुद्दा पॉप अप हो गया।
हाइब्रिड वेब देव

103

मुझे पता चला, कि मुझे publicअपने अनुरोध के मेजबान मूल्य के लिए devServer की संपत्ति निर्धारित करने की आवश्यकता है । होने के नाते यह उस बाहरी पते पर प्रदर्शित किया जाएगा।

इसलिए मुझे अपने webpack.config.js में इसकी आवश्यकता थी

devServer: {
  compress: true,
  public: 'store-client-nestroia1.c9users.io' // That solved it
}

एक और समाधान CLI पर इसका उपयोग कर रहा है:

webpack-dev-server --public $ C9_HOSTNAME <- Cloud9 बाहरी IP के लिए var


1
आज भी इसका सामना किया! प्रविष्टि के लिए धन्यवाद!
जॉनीक्यू

5
इसके अलावा बस आज में भाग गया। ऐसा लगता है कि webpack-dev-serverहाल ही में किए गए इस बदलाव के लिए सही होस्ट हेडर की आवश्यकता है। अधिक जानकारी के लिए github.com/webpack/webpack-dev-server/releases/tag/v2.4.3 देखें ।
केटरोनो

2
परिवर्तन वेबपैक-देव-सर्वर 1.16.4 को भी प्रभावित करता है। आप इसके बारे में और अधिक यहाँ पढ़ सकते हैं: medium.com/webpack/…
टायलर Collier

1
यह मेरे लिए तब भी काम आया जब मैं Invalid Host headerएक vue cli प्रोजेक्ट में त्रुटि में भाग गया ।
टिम्मी वॉन हेइस

43

इसी से मेरा काम बना है:

अपने वेबपैक में devServer के तहत अनुमत संख्या जोड़ें ।config.js:

devServer: {
  compress: true,
  inline: true,
  port: '8080',
  allowedHosts: [
      '.amazonaws.com'
  ]
},

मुझे Thehost या --public params का उपयोग करने की आवश्यकता नहीं थी।


यदि आपके पास HotModuleReload है, तो ऐसा लगता है कि publicपरम वही है जो उस के लिए लक्ष्य के रूप में उपयोग किए जाने वाले URL को सेट करता है (यदि यह अनुमान नहीं लगा सकता है कि पृष्ठ कैसे परोसा गया है, जो मेरे लिए नहीं हो सकता)।
टॉम सालेबा

15

वेबपैक-देव-सर्वर का उपयोग करते समय इस विन्यास को अपनी वेबपैक कॉन्फिग फ़ाइल में जोड़ें (आप अभी भी होस्ट को 0.0.0.0 के रूप में निर्दिष्ट कर सकते हैं)।

devServer: {
    disableHostCheck: true,
    host: '0.0.0.0',
    port: 3000
}

2
यह नए V..ss vue-cli config के लिए भी काम करता है: github.com/vuejs/vue-cli/blob/dev/docs/config.md
सेंटरऑरबिट

10

अधिक सुरक्षित विकल्प इस तरह से अपने Webpack कॉन्फिगरेशन में अनुमतियों को जोड़ना होगा:

module.exports = {
devServer: {
 allowedHosts: [
  'host.com',
  'subdomain.host.com',
  'subdomain2.host.com',
  'host2.com'
   ]
  }
};

सरणी में सभी अनुमत होस्ट शामिल हैं, आप उप-डोमेन भी निर्दिष्ट कर सकते हैं। यहां और देखें


5

यदि आपने अभी तक CRA से बाहर नहीं निकाला है, तो आप आसानी से अपने वेबपैक कॉन्फिगर को संशोधित नहीं कर सकते हैं। कॉन्फ़िगरेशन फ़ाइल में छिपा हुआ है node_modules/react_scripts/config/webpackDevServer.config.js। आप उस कॉन्फ़िगरेशन को बदलने के लिए हतोत्साहित हैं।

इसके बजाय, आप होस्ट जाँच को अक्षम DANGEROUSLY_DISABLE_HOST_CHECKकरने के trueलिए केवल पर्यावरण चर सेट कर सकते हैं :

DANGEROUSLY_DISABLE_HOST_CHECK=true yarn start  
# or the equivalent npm command

1
धन्यवाद, लुकास कलबर्टोड, सबसे अच्छा जवाब। मैंने उपयोग किया: DANGEROUSLY_DISABLE_HOST_CHECK = true निर्यात करें; npm शुरू
मार्क कहन

3

वेबपैक कॉन्फ़िगर फ़ाइल को संपादित करने के बजाय, होस्ट चेक को अक्षम करने का आसान तरीका .envहै अपने रूट फ़ोल्डर में एक फ़ाइल जोड़कर और इसे डालकर:

DANGEROUSLY_DISABLE_HOST_CHECK=true

जैसा कि चर नाम का तात्पर्य है, यह अक्षम करना असुरक्षित है और केवल देव वातावरण में उपयोग करना उचित है।


2

यदि आप C9 पर create-react-app का उपयोग कर रहे हैं तो शुरू करने के लिए इस कमांड को चलाएं

npm run start --public $C9_HOSTNAME

और जो भी आपका होस्टनाम है उससे ऐप एक्सेस करें (जैसे $C_HOSTNAMEहोस्टनाम प्राप्त करने के लिए टर्मिनल में टाइप करें )


0

यदि आप webpack-dev-serverएक कंटेनर में चल रहे हैं और इसके कंटेनर नाम के माध्यम से इसके लिए अनुरोध भेज रहे हैं, तो आपको यह त्रुटि मिलेगी। एक ही नेटवर्क पर अन्य कंटेनरों से अनुरोध करने के लिए, --publicविकल्प का उपयोग करके कंटेनर का नाम (या कंटेनर को हल करने के लिए जो भी नाम उपयोग किया जाता है) प्रदान करें । यह पूरी तरह से सुरक्षा जांच को अक्षम करने से बेहतर है।

मेरे मामले में, मैं डॉकटर-कम्पोज़ webpack-dev-serverनाम के एक कंटेनर में चल रहा था assets। मैंने इसके लिए स्टार्ट कमांड को बदल दिया है:

webpack-dev-server --mode development --host 0.0.0.0 --public assets

और दूसरा कंटेनर अब के माध्यम से अनुरोध करने में सक्षम था http://assets:5000

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