我收到一个“无效的主机头”的消息,我运行的应用程序作出反应的的WebPack开发服务器上Cloud9.io
时,我已经被解决此减少错误,只是用Webpack dev服务器运行应用程序。我收到一个“无效的主机头”的消息,我运行的应用程序作出反应的的WebPack开发服务器上Cloud9.io
webpack-dev-server -d --watch --history-api-fallback --host $IP --port $PORT
$ IP是具有主机地址 $端口具有端口号的变量:
我启动它。
我奉命在云9部署应用程序时使用这些增值经销商,因为他们有默认的IP和端口信息。
服务器启动并编译代码,没问题,它是不是虽然给我看索引文件。只有一个带有“无效主机标题”的空白屏幕作为文本。
这是请求:
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开发服务器是由于我的主机设置而返回。在webpack-dev-server/lib/Server.js行60.从https://github.com/webpack/webpack-dev-server
我的问题是我如何设置正确通过此检查。任何帮助将不胜感激。
我发现,我需要设置devServer的public
财产,我的请求的主机值。因为它将显示在该外部地址。
所以,我需要这在我的webpack.config.js
devServer: {
compress: true,
public: 'store-client-nestroia1.c9users.io' // That solved it
}
另一种解决方案是使用它的CLI:
的WebPack-DEV-服务器--public $ C9_HOSTNAME < - VAR的CLOUD9外部IP
遇到这样今天呢!感谢您的发表! – JohnnyQ
今天也碰到了这个。它看起来像'webpack-dev-server'最近做了这个改变需要正确的主机头。有关更多信息,请参阅https://github.com/webpack/webpack-dev-server/releases/tag/v2.4.3。 – Kaitrono
该更改也会影响webpack-dev-server 1.16.4。你可以在这里阅读更多关于它的信息:https://medium.com/webpack/webpack-dev-server-middleware-security-issues-1489d950874a。 –
我解决了这个问题,怎么一回事,因为的WebPack-DEV-服务器2.4.4添加主机检查
devServer: {
compress: true,
disableHostCheck: true, // That solved it
}
这也解决了我...谢谢 – John
这是一个安全问题。改用public选项来指定允许的主机名。有关更多信息,请参阅https://medium.com/webpack/webpack-dev-server-middleware-security-issues-1489d950874a。 – SystemParadox
公共选项本身并不适用于我... disableHostCheck是唯一解决它的方法:\ – davidkomer
编辑node_modules/webpack-dev-server/lib/Server.js
线425 更新的行
return true;
如果您正在使用创建反应的应用程式中C9只要运行这个命令来启动
npm run start --public $C9_HOSTNAME
而且无论从任何主机名访问应用程序是
看来问题是出了评价范围(在终端获取的主机名例如类型
$C_HOSTNAME
)。 – elmeister我不明白的问题是如何发生的。你能指出我正确的方向吗? –