前端跨域解决方案

打包前端项目体验

  • 生产环境和开发环境配置
  • 上线使用nginx进行代理跨域
  • 上线使用后端进行跨域

评估结果 Result

方法 软件 优点 缺点
前端跨域 webpack 直接在前端进行跨域,实质是利用webpack作为代理转发给服务器 上线之后不可以用,而且有时候还是需要后端也要设置跨域。
后端跨域 SpringBoot、Neo4j 直接进行配置跨域即可,接收来自所有域的请求时,前端不能是withCredential。 需要自己写后端或联系后端
nginx跨域 nginx 实质效果和webpack跨域差不多,因为跳过了浏览器,所以不会被CORS 需要看看后端是否进行了跨域,不然浏览器还是会出现CORS不符合标准的错误

nginx跨域配置

下面是一些跨域配置,前端部署在9998,但是我需要访问部署在10000端口的服务和7474端口的图形数据库,因此按照如下配置。相当于只为来自9998端口的请求代理,然后访问neo4j的时候你需要隐藏添加的origin,因为neo4j已经设置了可以跨域,相当于我们在nginx端进行了集成管理外部接口。

复制代码
server {
	listen       9998;
	server_name  localhost;
	location / {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Headers' '*';
        add_header 'Access-Control-Allow-Methods' '*';
        root G:\\Webapps\\beidou; 
    }

    location = /50x.html {
        root   html;
    }
}
# 负责请求转发,跨域
server {
    listen 9997;
    server_name localhost:9998;

    add_header 'Access-Control-Allow-Origin' 'http://localhost:9998';
    add_header 'Access-Control-Allow-Credentials' 'true';

    location /encrypt {
        proxy_pass http://localhost:10000/encrypt;
    }

    location /neo4j {
        proxy_hide_header 'Access-Control-Allow-Origin';
        proxy_pass http://localhost:7474/db/neo4j/tx/commit;
    }
}

前端上线和开发环境配置

javascript 复制代码
// vite.config.ts开发环境
// 自己的加密方法,部署需要一起部署
"/encrypt": {
  target: "http://localhost:10000",
    changeOrigin: true
}
// .env.production生产环境
// 取消前端的代理
VITE_Encrypt_Server = "http://localhost:9997/encrypt"
VITE_NEO4J_Server = "http://localhost:9997/neo4j"
// 处理方法
private RSAEncrypt(jsonData) {
  const axiosConfig = {
    method: "post",
    url:
      import.meta.env.MODE == "development"
      ? "/encrypt"
      : import.meta.env.VITE_Encrypt_Server,
    headers: {
      "Content-Type": "application/x-www-form-urlencoded"
    },
    data: jsonData
  }
  return axios(axiosConfig)
}
相关推荐
veneno8 分钟前
大量异步并发请求控制并发解决方案
前端
i***t91927 分钟前
Spring Boot项目接收前端参数的11种方式
前端·spring boot·后端
oden38 分钟前
2025博客框架选择指南:Hugo、Astro、Hexo该选哪个?
前端·html
小光学长1 小时前
基于ssm的宠物交易系统的设计与实现850mb48h(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·前端·数据库
小小前端要继续努力1 小时前
渐进增强、优雅降级及现代Web开发技术详解
前端
老前端的功夫2 小时前
前端技术选型的理性之道:构建可量化的ROI评估模型
前端·javascript·人工智能·ubuntu·前端框架
狮子座的男孩2 小时前
js函数高级:04、详解执行上下文与执行上下文栈(变量提升与函数提升、执行上下文、执行上下文栈)及相关面试题
前端·javascript·经验分享·变量提升与函数提升·执行上下文·执行上下文栈·相关面试题
爱学习的程序媛2 小时前
《JavaScript权威指南》核心知识点梳理
开发语言·前端·javascript·ecmascript
乐观主义现代人3 小时前
go 面试
java·前端·javascript
1***Q7843 小时前
前端在移动端中的离线功能
前端