不能使用 webpack-dev-server 作为 https 网站的代理 - ERR_TLS_CERT_ALTNAME_INVALID
Can not use webpack-dev-server as proxy to https website - ERR_TLS_CERT_ALTNAME_INVALID
我尝试使用 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
。结果不变。
如何解决这个问题呢?谢谢!
我认为您的 changeOrigin
和 secure
选项没有以正确的方式指定。如果我正确阅读 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
位,最好不要使用它。
我尝试使用 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
。结果不变。
如何解决这个问题呢?谢谢!
我认为您的 changeOrigin
和 secure
选项没有以正确的方式指定。如果我正确阅读 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
位,最好不要使用它。