当前位置: 首页 > article >正文

解决前后端跨域问题(包会的!)

文章目录

  • 一、定义
  • 二、跨域流程
  • 三、解决方案
  • 四、代码实现
  • 六、遇见Bug解决
  • 五、总结


一、定义

*跨域*指的是浏览器不能执行其他网站的脚本,它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。

*同源策略:*是指协议,域名,端口都要相同,其中有一个不同都会产生跨域。

跨域示例:
在这里插入图片描述

二、跨域流程

在这里插入图片描述

三、解决方案

解决跨域(一):使用nginx部署为同一域

在这里插入图片描述

解决跨域(二):配置当次请求允许跨域

添加响应头:

  • Access-Control-Allow-Origin:支持哪些来源的请求跨域
  • Access-Control-Allow-Methods:支持哪些方法跨域
  • Access-Control-Allow-Credentials:跨域请求默认不包含cookie,设置为true可以包含cookie
  • Access-Control-Expose-Headers:跨域请求暴露的字段
  •   CORS请求时,XMLHttpRequest对象的getResponseHeader()方法只能拿到6个基本字段:Cache-Control、Content-Language、Content-Type、Expires、Last-Medified、Pragma。如果想拿到其他字段,就必须在Access-Control-Expose-Headers里面指定。
    
  • Access-Control-Max-Age:表明该相应的有效时间为多少秒。在有效时间内,浏览器无须为同一请求再次发起预检请求。请注意,浏览器自身维护了一个最大有效时间,如果该首部字段的值超过了最大有效时间,将不会生效

四、代码实现

微服务项目在GateWay服务里新建一个配置类。如不是微服务结构,则放在新建config包下

@Configuration
public class MallCorsConfiguration {

    @Bean
    public CorsWebFilter corsWebFilter(){
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        //接受任何域名的请求
        corsConfiguration.addAllowedOrigin("*");
        //接受任何头部
        corsConfiguration.addAllowedHeader("*");
        //这行代码允许客户端使用任何HTTP方法(如GET、POST、PUT、DELETE等)进行跨域请求
        corsConfiguration.addAllowedMethod("*");
        //这行代码允许跨域请求携带凭证信息,如Cookies和HTTP认证信息(当allowCredentials设置为true时,allowedOrigins不能包含"*")
        corsConfiguration.setAllowCredentials(true);
        // 所有路径都拦截
        source.registerCorsConfiguration("/**",corsConfiguration);
        return new CorsWebFilter(source);
    }
}

六、遇见Bug解决

//TODO
🙏🙏

五、总结

//TODO
🙏🙏


http://www.kler.cn/a/370592.html

相关文章:

  • 【JavaEE】Spring Web MVC
  • Python操作Excel——openpyxl使用笔记(2)
  • C#中无法在串口serialPort1_DataReceived启动定时器的解决方法
  • K8S开启/关闭审计日志
  • 函数(函数的概念、库函数、自定义函数、形参和实参、return语句、数组做函数参数、嵌套调用和链式访问、函数的声明和定义、static和extern)
  • 【OpenCV(C++)快速入门】--opencv学习
  • pytest自动化测试数据驱动yaml/excel/csv/json
  • Python——发送HTTP请求
  • docker 安装 PostgreSQL
  • 《国产AI大模型应用报告》发布!《豆包》上半年下载量超3309万,更多机会有待在应用层被发掘(附PDF)
  • 前端经典【面试题】持续更新HTML、CSS、JS、VUE、FLUTTER、性能优化等
  • .gitattributes文件是如何影响git操作的
  • react18中引入redux及react-redux来管理公共数据仓库
  • 什么是高存储服务器,有哪些优势,如何选择?
  • 单元测试详解
  • 语音语言模型最新综述! 关于GPT-4o背后技术的尝试
  • 安卓两个活动之间的消息传输(收到消息后基于应答)
  • 企业财务管理:从每刻到金蝶云星空的报销单集成案例
  • 实验03分支7-13 算术入门之加减乘除
  • 【ACM出版,EI稳定检索,九大高校联合举办, IEEE Fellow支持】2024年计算机视觉与艺术研讨会(CVA 2024)
  • HarmonyOS“一次开发,多端部署”
  • 即插即用篇 | YOLOv8 引入 空间和通道协同注意力模块 SCSA
  • 【计算机网络一】网络学习前置知识
  • 十四:Python学习笔记--基础知识完结(12)写几个案例 打包exe出来 齐活
  • 1.机器人抓取与操作介绍-深蓝学院
  • softmax回归简洁实现