• 解决分布式React前端在开发环境的跨域问题


    在前后端分离的分布式架构中,跨域是一道无法绕过去的门槛,众所周知,生产环境上解决跨域最便捷的方式是使用Nginx来处理,那么,在本地开发环境又该如何处理呢?

     

    React框架里处理跨域问题,可以使用http-proxy-middleware库解决。

     

    http-proxy-middleware可实现全局设置,将客户端请求转发到目标服务器,从而实现代理服务器功能,进而解决模块化前端跨域访问的问题。

     

    本文基于SpringBoot+React环境进行说明。

     

    1.前端下载依赖

    1 $ npm install --save-dev http-proxy-middleware

    2.在src目录下新建setupProxy.js文件

     1 const { createProxyMiddleware } = require('http-proxy-middleware');
     2 module.exports = function(app) {
     3 // /api 表示代理路径
     4 //target 表示目标服务器的地址
     5     app.use(
     6         '/api/system',
     7         createProxyMiddleware({
     8             // http://localhost:4000/ 地址只是示例,实际地址以项目为准
     9             target: 'http://127.0.0.1:8081',
    10             // 跨域时一般都设置该值 为 true
    11             changeOrigin: true,
    12             // 重写接口路由
    13             // pathRewrite: {
    14             //     '^/admin': '',// 这样处理后,最终得到的接口路径为: http://localhost:8080/xxx
    15             // }
    16         })
    17     );
    18     
    19       app.use(
    20         '/admin/example',
    21         createProxyMiddleware({
    22             target: 'http://127.0.0.1:8080',
    23             changeOrigin: true,
    24         })
    25     );
    26 }

    这里需要注意一点是,在http-proxy-middleware的1.0.0之前的版本与之后的版本,两者对模块引引用是存在差别的,如:

    0.x.x版本的引用方式是:

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

     

    1.0.0之后的版本引用方式:

      1 const {createProxyMiddleware}=require('http-proxy-middleware');

    该前端对应的后端设置如下:

    1 server:
    2   port: 8081
    3   servlet:
    4     context-path: /api
    5     

    按照以上设置,即可实现本地开发环境解决跨域问题,当然,这里只适合在开发环境进行开发时设置,若发布到生产上后,最好方式是通过nginx代理来进行解决跨域问题。

  • 相关阅读:
    Linux下用curlftpfs挂载FTP服务器
    wordpress相关文章调用相同文章形式内容
    如何取消Hide My WP的激活提示
    如何修改WordPress登录页面
    centos8开启端口
    C++ lambda和function
    服务器集群(二)—— Windows Server 2019 多用户同时远程连接破解教程
    服务器集群(一)—— Windows办公服务器搭建
    解决:(0x0000000080000000, 2147483648, 0) failed; error='页 面文件太小,无法完成操作。' (DOS error/errno=1455)
    @Accessors(chain = true)注解的作用
  • 原文地址:https://www.cnblogs.com/zhujiqian/p/13829277.html
Copyright © 2020-2023  润新知