前端解决跨域------反向代理

一、在Vue项目中使用反向代理解决跨域问题,可以通过配置Vue的开发服务器(webpack-dev-server)来实现。以下是具体的步骤:

注意:这种配置只在开发环境下有效。在生产环境中,你需要使用其他的方式来解决跨域问题,比如在后端服务器上进行相关配置。

现在,当你在前端代码中发起以 /api 为前缀的请求时,Vue开发服务器将会转发该请求到目标服务器,并返回响应结果给前端,从而解决了跨域问题。

例如,如果你希望访问 /api/user 接口,则可以在前端代码中使用 /api/user 来发起请求,而不需要担心跨域限制。

二、在Node.js中使用中间件代理来解决跨域问题,可以使用http-proxy-middleware这个库来实现。

  1. 打开Vue项目根目录下的 vue.config.js 文件(如果没有则新建一个)。
  2. 在文件中添加以下代码来配置反向代理:
    module.exports = {
      devServer: {
        proxy: {
          '/api': { // 这里的 '/api' 是你希望通过代理访问的请求前缀,可以根据实际情况进行修改
            target: 'http://目标服务器的域名或IP地址', // 设置目标服务器的地址,即要跨域访问的后端接口地址
            changeOrigin: true, // 将主机标头的原点改为目标URL
            pathRewrite: {
              '^/api': '' // 去掉请求前缀,例如将 '/api/user' 转为 '/user'
            }
          }
        }
      }
    };

    请将上述代码中的 http://目标服务器的域名或IP地址 替换为实际的目标服务器地址。

  3. 保存 vue.config.js 文件。
  4. 重新启动Vue开发服务器。
  1. 首先,在你的Node.js项目中使用npm或yarn安装http-proxy-middleware库:

npm install http-proxy-middleware

  1. 在你的Node.js项目中创建一个中间件文件(例如:proxyMiddleware.js)并添加以下代码:
  2. const { createProxyMiddleware } = require('http-proxy-middleware');
    
    const proxyMiddleware = createProxyMiddleware({
      target: 'http://目标服务器的域名或IP地址', // 设置目标服务器的地址,即要跨域访问的后端接口地址
      changeOrigin: true, // 将主机标头的原点改为目标URL
    });
    
    module.exports = proxyMiddleware;

    请将上述代码中的 http://目标服务器的域名或IP地址 替换为实际的目标服务器地址。

  3. 现在,在你的主应用程序文件(例如:app.js)中使用该中间件:
    const express = require('express');
    const proxyMiddleware = require('./proxyMiddleware');
    
    const app = express();
    
    // 其他中间件和路由设置...
    
    // 使用代理中间件来处理跨域请求
    app.use('/api', proxyMiddleware);
    
    // 其他路由设置...
    
    // 启动服务器
    app.listen(3000, () => {
      console.log('Server is running on port 3000');
    });

    请将上述代码中的 /api 替换为你希望用于代理的请求前缀。

  4. 保存文件并启动Node.js服务器。现在,当你在前端代码中发起以 /api 为前缀的请求时,Node.js服务器将会将该请求转发到目标服务器,并返回响应结果给前端,从而解决了跨域问题。
  5. 注意:这种方式只在Node.js服务器端起作用,适用于开发环境和生产环境。但是要注意在生产环境中配置适当的安全性和权限控制措施。


     

猜你喜欢

转载自blog.csdn.net/weixin_62635213/article/details/132335239