Node.js Heroku的NodeJS代理服务器
我正在构建一个NodeJS/express应用程序,在这个应用程序中,我需要将一些请求转发给我的Heroku API 我已经探索了许多不同的解决方案(包括),但没有一个适合我 代码: 我的express服务器正常工作,但当我向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
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)