无法将webpack-dev-server用作https网站的代理-ERR_TLS_CERT_ALTNAME_INVALID

时间:2018-11-19 06:15:41

标签: webpack proxy certificate webpack-dev-server

我尝试使用webpack-dev-server作为对远程测试服务器的API请求的代理(以免在本地计算机上引发繁重的Java服务器)。问题是远程服务器仅使用HTTPS。由于某种原因,尽管它可以从浏览器正确打开,但它不接受来自webpack-dev-server的证书。

我的package.json部分:

"webpack": "^3.12.0",
"webpack-dev-server": "^2.11.3"

我的webpack.config.json部分:

// -- DEV-SERVER
devServer: {
    contentBase: artifact,
    // publicPath: path.join(artifact, 'build', '/'),
    host: "lk-local.net",
    port: 8443,
    https: {
        key: fs.readFileSync('./src/main/profiles/local/cert/webpack/server.key'),
        cert: fs.readFileSync('./src/main/profiles/local/cert/webpack/server.crt'),
        ca: fs.readFileSync('./src/main/profiles/local/cert/webpack/cacert.crt'),
    },
    historyApiFallback: true,
    hot: true,
    headers: {'Access-Control-Allow-Origin': '*'},
    proxy: {
        '/client-config': 'https://dev-2.MYSERVER.ru/client-config',
        '/client-api/*': 'https://dev-2.MYSERVER.ru/client-api/',
        secure: false,
        changeOrigin: true
    }
}

Webpack-dev-server输出:

webpack: Compiled successfully.
[HPM] Error occurred while trying to proxy request /client-api/checkBrowser from lk-local.net:8443 to https://dev-2.MYSERVER.ru/client-api/ (ERR_TLS_CERT_ALTNAME_INVALID) (https://nodejs.org/api/errors.html#errors_common_system_errors)
[HPM] Error occurred while trying to proxy request /client-config from lk-local.net:8443 to https://dev-2.MYSERVER.ru/client-config (ERR_TLS_CERT_ALTNAME_INVALID) (https://nodejs.org/api/errors.html#errors_common_system_errors)

静态状态正确打开,对API的请求无效。

我尝试使用其他证书,并将https替换为true。结果不变。 如何解决这个问题呢?谢谢!

1 个答案:

答案 0 :(得分:0)

我认为您的changeOriginsecure选项未正确指定。如果我正确阅读the docs,则'/client-config': 'https://dev-2.MYSERVER.ru/client-config'表格不支持它们。您可以执行以下任一操作:

proxy: { '/client-config': { target: 'https://dev-2.MYSERVER.ru/client-config', secure: false, changeOrigin: true }, ... }

proxy: [{ context: ['/client-config', '/client-api/*'], target: 'https://dev-2.MYSERVER.ru/', secure: false, changeOrigin: true }]

顺便说一句,如果您的浏览器未给出安全警告,则您不需要secure: false位,最好不要使用它。