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

Spring boot开启跨域配置

Spring boot开启跨域配置

背景

跨域(Cross-Origin)是指在互联网上的一个域下的文档或脚本尝试请求另一个域下的资源时,域名、协议或端口不同的这种情况。具体来说,如果一个网页试图通过脚本(如JavaScript)从不同源的服务器上请求数据,就会触发浏览器的同源策略限制,导致跨域问题。
同源策略(Same-origin policy)是Web浏览器的一个安全功能,它要求Web浏览器仅允许执行来自同一站点的脚本访问该站点的资源。这意味着,如果网页A尝试访问网页B的资源,且这两个网页的协议、域名或端口号中任何一个不相同,浏览器就会阻止这种访问,以防止恶意网站读取另一个网站的数据。

Spring boot解决跨域问题

一、controller添加注解

在controller层添加@CrossOrigin就可以解决跨域问题

@RestController
@RequestMapping("test")
@Slf4j
@CrossOrigin
public class DemoController {@RequestMapping("message")public String test(@RequestBody Message message) {log.info("{}", JSON.toJSONString(message));return "test";}
}
二,全局配置

添加如下全局配置就可以统一配置跨域支持

@Configuration
public class MvcConfig implements WebMvcConfigurer {/*** 开启全局跨域配置* @param registry*/@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOriginPatterns("*").allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE").maxAge(3600).allowCredentials(true);}}
三,通过拦截器配置

通过如下拦截器配置,也可以支持跨域

public class CorsInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//表示接受任意域名的请求,也可以指定域名response.setHeader("Access-Control-Allow-Origin", request.getHeader("origin"));//该字段可选,是个布尔值,表示是否可以携带cookieresponse.setHeader("Access-Control-Allow-Credentials", "true");response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS");response.setHeader("Access-Control-Allow-Headers", "*");//这里可以不加,但是其他语言开发的话记得处理options请求/*** 非简单请求是对那种对服务器有特殊要求的请求,* 比如请求方式是PUT或者DELETE,或者Content-Type字段类型是application/json。* 都会在正式通信之前,增加一次HTTP请求,称之为预检。浏览器会先询问服务器,当前网页所在域名是否在服务器的许可名单之中,* 服务器允许之后,浏览器会发出正式的XMLHttpRequest请求*/if(HttpMethod.OPTIONS.toString().equals(request.getMethod())){return true;}return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {}
}

总结

Spring boot解决跨域问题还是很方便的,遇到跨域问题,通过以上方式都可以实现解决

http://www.lryc.cn/news/368499.html

相关文章:

  • java面试题:hashCode的作用
  • 从零开始精通Onvif之获取设备信息
  • FiRa标准UWB MAC实现(三)——距离如何获得?
  • 基于百度翻译API的火车头PHP翻译插件,可以翻译HTML片段
  • mysql高级用法常用函数
  • 【打印100个常用Linux命令】
  • 友情提示:lazarus的tsortgrid.autofillcolumns存在BUG
  • github的个人readme文件
  • java面试题: HashMap、HashSet 和 HashTable 的区别
  • CPP初级:模板的运用!
  • 排序---基数排序
  • “新高考”下分班怎么分?
  • 二叉树的层序遍历-力扣
  • N32G45XVL-STB之移植LVGL(lvgl-8.2.0)
  • 【设计模式】创建型设计模式之 原型模式
  • 【类型商店】字符字符串(下)
  • 『 Linux 』内存管理与文件系统
  • 线性代数|机器学习-P8矩阵低秩近似eckart-young
  • 平面设计神器CorelDRAW2021精简版,你值得拥有!
  • kafka是什么?
  • ABC351
  • base上海,数据科学,数据挖掘,数据分析等岗位求收留
  • IC元器件
  • SQL159 每个创作者每月的涨粉率及截止当前的总粉丝量
  • Linux安装MySQL教程【带图文命令巨详细】
  • 外部排序快速入门详解:基本原理,败者树,置换-选择排序,最佳归并树
  • 人工智能和物联网如何结合
  • 【JAVASE】JAVA应用案例(下)
  • 【面试干货】 B 树与 B+ 树的区别
  • Socket编程权威指南(四)彻底解密 Epoll 原理