Node.js Heroku的NodeJS代理服务器

Node.js Heroku的NodeJS代理服务器,node.js,express,heroku,proxy,Node.js,Express,Heroku,Proxy,我正在构建一个NodeJS/express应用程序,在这个应用程序中,我需要将一些请求转发给我的Heroku API 我已经探索了许多不同的解决方案(包括),但没有一个适合我 代码: 我的express服务器正常工作,但当我向localhost/api/some route发出请求时,我会出现以下错误: Error: Hostname/IP doesn't match certificate's altnames: "Host: localhost. is not in the cert's a

我正在构建一个NodeJS/express应用程序,在这个应用程序中,我需要将一些请求转发给我的Heroku API

我已经探索了许多不同的解决方案(包括),但没有一个适合我

代码:

我的express服务器正常工作,但当我向
localhost/api/some route
发出请求时,我会出现以下错误:

Error: Hostname/IP doesn't match certificate's altnames: "Host: localhost. is not in the cert's altnames: DNS:*.herokuapp.com, DNS:herokuapp.com"
    at Object.checkServerIdentity (tls.js:199:17)
    at TLSSocket.<anonymous> (_tls_wrap.js:1091:29)
    at emitNone (events.js:86:13)
    at TLSSocket.emit (events.js:185:7)
    at TLSSocket._finishInit (_tls_wrap.js:603:8)
    at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:433:38)

Details:
    killed: false
    code: 1
    signal: null
    cmd: node ./server/index.js
Stack:
Error: Command failed: node ./server/index.js
C:\Users\web-app\node_modules\http-proxy\lib\http-proxy\index.js:119
    throw err;
    ^

Error: Hostname/IP doesn't match certificate's altnames: "Host: localhost. is not in the cert's altnames: DNS:*.herokuapp.com, DNS:herokuapp.com"
    at Object.checkServerIdentity (tls.js:199:17)
    at TLSSocket.<anonymous> (_tls_wrap.js:1091:29)
    at emitNone (events.js:86:13)
    at TLSSocket.emit (events.js:185:7)
    at TLSSocket._finishInit (_tls_wrap.js:603:8)
    at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:433:38)

    at ChildProcess.exithandler (child_process.js:206:12)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:191:7)
    at maybeClose (internal/child_process.js:877:16)
    at Socket.<anonymous> (internal/child_process.js:334:11)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at Pipe._handle.close [as _onclose] (net.js:498:12)
错误:主机名/IP与证书的altnames不匹配:“主机:localhost.不在证书的altnames:DNS:*.herokuapp.com,DNS:herokuapp.com中”
在Object.checkServerIdentity(tls.js:199:17)
在TLSSocket。(_tls_wrap.js:1091:29)
在emitNone(events.js:86:13)
在TLSSocket.emit(events.js:185:7)
完成时(包装:603:8)
在TLSWrap.ssl.onhandshakedone(_tls_wrap.js:433:38)
细节:
被杀:错
代码:1
信号:空
cmd:node./server/index.js
堆栈:
错误:命令失败:node./server/index.js
C:\Users\web app\node\u modules\http proxy\lib\http proxy\index.js:119
犯错误;
^
错误:主机名/IP与证书的altnames不匹配:“主机:localhost.不在证书的altnames:DNS:*.herokuapp.com,DNS:herokuapp.com中”
在Object.checkServerIdentity(tls.js:199:17)
在TLSSocket。(_tls_wrap.js:1091:29)
在emitNone(events.js:86:13)
在TLSSocket.emit(events.js:185:7)
完成时(包装:603:8)
在TLSWrap.ssl.onhandshakedone(_tls_wrap.js:433:38)
在ChildProcess.exithandler(child_process.js:206:12)
两点钟(events.js:106:13)
在ChildProcess.emit(events.js:191:7)
在maybeClose(内部/子进程js:877:16)
在插座上。(内部/子进程js:334:11)
在emitOne(events.js:96:13)
在Socket.emit(events.js:188:7)
at Pipe.\u handle.close[as\u onclose](net.js:498:12)
从我在错误消息中收集到的信息来看,Heroku似乎不喜欢我从本地主机代理的事实。。。但我真的不确定还能尝试什么


我曾经尝试过使用SSL(如上面的示例中,使用自签名SSL证书)和不使用SSL创建
httpProxy.createProxyServer()
,但我得到了相同的错误。

经过大量的尝试、错误和吹毛求疵之后,我最终在项目上产生了一个问题

我不知道是什么具体解决了我上面提到的错误,但我看到的最大问题是在其他
express
中间件位之后配置
http代理中间件
(它在引擎盖下使用
http代理
),特别是
body解析器


这个故事的寓意是
http代理中间件
应该是您配置的第一个(如果不是第一个)中间件。

经过大量的尝试、错误和吹毛求疵,我最终在项目上产生了一个问题

我不知道是什么具体解决了我上面提到的错误,但我看到的最大问题是在其他
express
中间件位之后配置
http代理中间件
(它在引擎盖下使用
http代理
),特别是
body解析器

这个故事的寓意是
http代理中间件
应该是您配置的第一个(如果不是第一个)中间件

Error: Hostname/IP doesn't match certificate's altnames: "Host: localhost. is not in the cert's altnames: DNS:*.herokuapp.com, DNS:herokuapp.com"
    at Object.checkServerIdentity (tls.js:199:17)
    at TLSSocket.<anonymous> (_tls_wrap.js:1091:29)
    at emitNone (events.js:86:13)
    at TLSSocket.emit (events.js:185:7)
    at TLSSocket._finishInit (_tls_wrap.js:603:8)
    at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:433:38)

Details:
    killed: false
    code: 1
    signal: null
    cmd: node ./server/index.js
Stack:
Error: Command failed: node ./server/index.js
C:\Users\web-app\node_modules\http-proxy\lib\http-proxy\index.js:119
    throw err;
    ^

Error: Hostname/IP doesn't match certificate's altnames: "Host: localhost. is not in the cert's altnames: DNS:*.herokuapp.com, DNS:herokuapp.com"
    at Object.checkServerIdentity (tls.js:199:17)
    at TLSSocket.<anonymous> (_tls_wrap.js:1091:29)
    at emitNone (events.js:86:13)
    at TLSSocket.emit (events.js:185:7)
    at TLSSocket._finishInit (_tls_wrap.js:603:8)
    at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:433:38)

    at ChildProcess.exithandler (child_process.js:206:12)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:191:7)
    at maybeClose (internal/child_process.js:877:16)
    at Socket.<anonymous> (internal/child_process.js:334:11)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at Pipe._handle.close [as _onclose] (net.js:498:12)