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

12
我尝试使用webpack-dev-server作为代理,将API请求发送到远程测试服务器(以避免在本地机器上启动沉重的Java服务器)。问题是远程服务器仅使用HTTPS。由于某种原因,它无法接受来自webpack-dev-server的证书,尽管从浏览器中可以正确打开。

我的package.json部分:

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

我的 webpack.config.json 部分:


(My `webpack.config.json` part:)
// -- 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个回答

26

我认为您的 changeOriginsecure 选项没有以正确的方式指定。如果我正确理解了 文档'/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 这部分代码,最好将其省略。


changeOrigin字段在我的情况下是不需要的。 - jmargolisvt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接