Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在prod中正确代理对/api/ressource的请求?_Javascript_Node.js_Express_Webpack - Fatal编程技术网

Javascript 如何在prod中正确代理对/api/ressource的请求?

Javascript 如何在prod中正确代理对/api/ressource的请求?,javascript,node.js,express,webpack,Javascript,Node.js,Express,Webpack,我有一个webpack dev配置,前端dev服务器运行在8080上,而备份服务器运行在3000端口上 因此,在开发模式下,我的Web包开发服务器的配置如下: proxy: { '/api': 'http://localhost:3000', } 在为前端构建的静态文件提供服务的prod服务器中,我如何做同样的事情 我的prod服务器有以下代码,用于提供前端的静态文件: const proxy = require('http-proxy-middleware') app.use(

我有一个webpack dev配置,前端dev服务器运行在8080上,而备份服务器运行在3000端口上

因此,在开发模式下,我的Web包开发服务器的配置如下:

proxy: {
  '/api': 'http://localhost:3000',
}
在为前端构建的静态文件提供服务的prod服务器中,我如何做同样的事情

我的prod服务器有以下代码,用于提供前端的静态文件:

const proxy = require('http-proxy-middleware')

    app.use(express.static(dir))

    /**
     * Redirect everything that starts with /api/* to the backend rest server
     */

    app.use('/api', proxy({ target: backendUrl }))

    app.get('*', (req, res) => {
      res.sendFile(path.resolve(dir + '/index.html'))
    })
这不起作用,因为cookies似乎在代理过程中丢失了(与evyrhthing工作的Web包代理不同)


我是否以正确的方式处理此问题?

在这种情况下,您可以创建一个
反向代理,该代理将接收来自前端的所有信息,向其他地址发出请求,然后将正确答案返回给前端。我以前开发过很多这样的东西,我创建了一个可以帮助你的

基本上,流程是:

渲染服务器(端口8080)->后端(端口3000)->渲染服务器(端口8080)->前端可以尝试使用:

  • 作为反向代理的服务器(即nginx)
  • 作为反向代理的节点http代理
  • vhost中间件,如果每个域由同一个Express提供服务 codebase和node.js实例
您可能还需要检查cookie标志(changeOrigin、secure、cookieDomainRewrite等)


信息:如果在本地主机上运行http,如果响应中存在安全标志,则不会设置cookie

哪些cookie丢失,是后端的还是产品的?我试着代理google.com,我得到了google的cookies。前端cookies丢失了。我想既然我收到了未经授权的回复。。。