代理可以解决浏览器跨域请求的问题:

  1. 服务器之间是不存在跨域的,可以使用 NodeJS 创建一个客户端代理,由它代替浏览器客户端直接向服务端发送请求;
  2. 浏览器客户端可以将发送给服务端的请求发送给客户端代理,由客户端代理转为发送,解决跨域问题;

代理图解:

示例代码

  1. 服务端:这里用 node 模拟方便演示
    const http = require('http')
    
    const server = http.createServer((req, res) => {
      const arr = []
      req.on('data', chunk => arr.push(chunk))
    
      req.on('end', () => {
        console.log(Buffer.concat(arr).toString())
        res.end('获取到了客户端的数据')
      })
    })
    
    server.listen(1234, () => console.log('外部服务端启动了'))
    
  2. 客户端代理:
    const http = require('http')
    
    const options = {
      host: 'localhost',
      port: 1234,
      path: '/',
      method: 'POST'
    }
    
    const server = http.createServer((request, response) => {
      // 向服务端发送请求,并将响应的数据返回给客户端
      const req = http.request(options, res => {
        const arr = []
        res.on('data', chunk => arr.push(chunk))
    
        res.on('end', () => {
          const ret = Buffer.concat(arr).toString()
          response.setHeader('content-type', 'text/html;charset=utf-8')
          response.end(ret) // 将数据发送给客户端
        })
      })
    
      req.end('你好张三') // 将数据发送给服务端
    })
    
    server.listen(1000, () => console.log('本地服务端启动了'))
    
  3. 客户端:

打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于产品、设计、开发的问题和看法,还有技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程

了解更多

目录

  1. 1. 代理可以解决浏览器跨域请求的问题:
  2. 2. 代理图解:
  3. 3. 示例代码