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 */ @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOriginPatterns("*") .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE") .maxAge(3600) .allowCredentials(true); } }
三、通过拦截器配置
通过如下拦截器配置,也可以支持跨域
public class CorsInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //表示接受任意域名的请求,也可以指定域名 response.setHeader("Access-Control-Allow-Origin", request.getHeader("origin")); //该字段可选,是个布尔值,表示是否可以携带cookie response.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; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
总结
Spring boot解决跨域问题还是很方便的,遇到跨域问题,通过以上方式都可以实现解决
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Spring Bean Scope 有状态的Bean与无状态的Bean
这篇文章主要介绍了Spring Bean Scope 有状态的Bean与无状态的Bean,每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,下面来了解有状态和无状态的区别吧2022-01-01java使用POI读取properties文件并写到Excel的方法
这篇文章主要介绍了java使用POI读取properties文件并写到Excel的方法,涉及java操作properties文件及Excel文件的相关技巧,需要的朋友可以参考下2015-06-06springboot2.x只需两步快速整合log4j2的方法
这篇文章主要介绍了springboot2.x只需两步快速整合log4j2的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-05-05tio-http-server打包为二进制文件的实现及优势详解
这篇文章主要为大家介绍了tio-http-server打包为二进制文件实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-12-12
最新评论