Я использую в качестве среды Cloud9.io Ubuntu VM Online IDE, и из-за устранения этой ошибки я сократил ее до простого запуска приложения с сервером Webpack dev.
Я запускаю это с:
webpack-dev-server -d --watch --history-api-fallback --host $IP --port $PORT
$ IP - это переменная с адресом хоста. $ PORT имеет номер порта.
Я получил указание использовать эти переменные при развертывании приложения в Cloud 9, так как они имеют IP-адрес по умолчанию и информацию о PORT.
Сервер загружается и компилирует код, без проблем, он не показывает мне индексный файл. Только пустой экран с «Неверный заголовок узла» в качестве текста.
Это запрос:
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
Это мой package.json:
{
"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 возвращает это из-за моей настройки хоста. В строке 60 webpack-dev-server / lib / Server.js. С https://github.com/webpack/webpack-dev-server
У меня вопрос, как мне правильно настроить эту проверку? Любая помощь будет принята с благодарностью.
источник
Ответы:
Проблема возникает потому, что
webpack-dev-server
2.4.4 добавляет проверку хоста. Вы можете отключить его, добавив это в конфигурацию вашего веб-пакета:РЕДАКТИРОВАТЬ: Обратите внимание, это исправление небезопасно.
Пожалуйста, смотрите следующий ответ для безопасного решения: https://stackoverflow.com/a/43621275/5425585
источник
Я обнаружил, что мне нужно установить
public
свойство devServer равным значению хоста моего запроса. Так как он будет отображаться по этому внешнему адресу.Так что мне нужно это в моем webpack.config.js
Другое решение использует его на CLI:
webpack-dev-server --public $ C9_HOSTNAME <- var для внешнего IP-адреса Cloud9
источник
webpack-dev-server
недавно это изменение потребовало правильного заголовка хоста. См. Github.com/webpack/webpack-dev-server/releases/tag/v2.4.3 для получения дополнительной информации.Invalid Host header
ошибкой в проекте Vue Cli.Вот что сработало для меня:
Добавьте позволенные хосты под devServer в ваш webpack.config.js:
Мне не нужно было использовать параметры --host или --public.
источник
public
param - это то, что задает URL, используемый в качестве цели для этого (если он не может угадать его по тому, как обслуживается страница, чего для меня он не мог).Добавьте эту конфигурацию в ваш файл конфигурации webpack при использовании webpack-dev-server (вы все равно можете указать хост как 0.0.0.0).
источник
Более безопасным вариантом было бы добавить allowHosts в конфигурацию вашего Webpack следующим образом:
Массив содержит все разрешенные хосты, вы также можете указать subdomians. проверить больше здесь
источник
Если вы еще не вышли из CRA, вы не можете легко изменить конфигурацию вашего веб-пакета. Конфиг файл скрыт в
node_modules/react_scripts/config/webpackDevServer.config.js
. Вы не можете изменить этот конфиг.Вместо этого, вы можете просто установить переменную окружения ,
DANGEROUSLY_DISABLE_HOST_CHECK
чтобыtrue
отключить проверку хоста:источник
Вместо того, чтобы редактировать файл конфигурации webpack, проще отключить проверку хоста, добавив
.env
файл в корневую папку и поместив это:Как следует из имени переменной, ее отключение небезопасно и его рекомендуется использовать только в среде разработчика.
источник
Если вы используете create-Reaction-app на C9, просто запустите эту команду для запуска
И получить доступ к приложению с любого вашего имени хоста (например, введите
$C_HOSTNAME
в терминале, чтобы получить имя хоста)источник
Если вы работаете
webpack-dev-server
в контейнере и отправляете запросы к нему через его имя контейнера, вы получите эту ошибку. Чтобы разрешить запросы от других контейнеров в той же сети, просто--public
укажите имя контейнера (или любое другое имя, используемое для разрешения контейнера) с помощью параметра. Это лучше, чем полное отключение проверки безопасности.В моем случае я работал
webpack-dev-server
в контейнере с именемassets
docker-compose. Я изменил команду запуска на это:И другой контейнер теперь мог делать запросы через
http://assets:5000
.источник