Skip to content

8node代理

node中间件实现跨域代理,是通过启一个代理服务器,实现数据的转发,也可以通过设置cookieDomainRewrite参数修改响应头中cookie中的域名,实现当前域名的cookie写入,方便接口登录认证。

利用 node + express + http-proxy-middleware 搭建一个proxy服务器,下为前端代码:

html
<script>
var xhr = new XMLHttpRequest()
// 前端开关,浏览器是否读写cookie
xhr.withCredentials = true
// 访问http-proxy-middleware代理服务器
xhr.open('get', 'http://www.domain1.com:3000/login?user=admin', true)
xhr.send()
</script>

后端代码:

js
const express = require('express')
const proxy = require('http-proxy-middleware')
const app = express()

app.use('/', proxy({
  // 代理跨域目标
  target: 'http://www.domain2.com:8080',
  changeOrigin: true

  // 修改响应头信息,实现跨域并允许带cookie
  onProxyRes: (proxyRes, req, res) => {
    res.header('Access-Control-Allow-Origin', 'http://www.domain1.com')
    res.header('Access-Control-Allow-Credentials', 'true')
  },

  // 修改响应信息中的cookie签名
  cookieDomainRewrite: 'www.domain1.com' //也可为false表示不修改
}))

app.listen(3000)
console.log('proxy server is listen at port 3000...')

共 20 个模块,1301 篇 Markdown 文档。