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

SpringBoot-允许跨域配置

文章目录

  • 什么是跨域?
  • 为什么需要配置跨域?
  • 如何实现?

什么是跨域?

跨域(Cross-Origin Resource Sharing,简称 CORS)是一种安全策略,用于限制一个域的网页如何与另一个域的资源进行交互。这是浏览器实现的同源策略(Same-Origin Policy)的一部分,旨在防止恶意网站通过一个域的网页访问另一个域的敏感数据。

为什么需要配置跨域?

  1. 浏览器出于安全考虑实施了同源策略,默认阻止跨域请求。
  2. 为了在保证安全的前提下,让Web应用能够合理地进行跨源资源访问。

如何实现?

项目中构建以下配置类即可。

import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import com.sun.xml.bind.v2.util.ByteArrayOutputStreamEx;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;@Configuration
public class MvcConfig implements WebMvcConfigurer {/*** 跨域设置** @param registry registry*/@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowCredentials(true).allowedMethods("*").allowedOriginPatterns("*").allowedHeaders("*");}/*** 乱码设置** @return HttpMessageConverter*/@Beanpublic HttpMessageConverter<String> responseBodyConverter() {return new StringHttpMessageConverter(StandardCharsets.UTF_8);}/*** 返回数据格式转换*/@Overridepublic void configureMessageConverters(List<HttpMessageConverter<?>> converters) {FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();//升级最新版本需加=============================================================List<MediaType> supportedMediaTypes = new ArrayList<>();supportedMediaTypes.add(MediaType.APPLICATION_JSON);supportedMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);supportedMediaTypes.add(MediaType.APPLICATION_ATOM_XML);supportedMediaTypes.add(MediaType.APPLICATION_FORM_URLENCODED);supportedMediaTypes.add(MediaType.APPLICATION_OCTET_STREAM);supportedMediaTypes.add(MediaType.APPLICATION_PDF);supportedMediaTypes.add(MediaType.APPLICATION_RSS_XML);supportedMediaTypes.add(MediaType.APPLICATION_XHTML_XML);supportedMediaTypes.add(MediaType.APPLICATION_XML);supportedMediaTypes.add(MediaType.IMAGE_GIF);supportedMediaTypes.add(MediaType.IMAGE_JPEG);supportedMediaTypes.add(MediaType.IMAGE_PNG);supportedMediaTypes.add(MediaType.TEXT_EVENT_STREAM);supportedMediaTypes.add(MediaType.TEXT_HTML);supportedMediaTypes.add(MediaType.TEXT_MARKDOWN);supportedMediaTypes.add(MediaType.TEXT_PLAIN);supportedMediaTypes.add(MediaType.TEXT_XML);fastConverter.setSupportedMediaTypes(supportedMediaTypes);//创建配置类FastJsonConfig fastJsonConfig = new FastJsonConfig();//修改配置返回内容的过滤fastJsonConfig.setSerializerFeatures(SerializerFeature.DisableCircularReferenceDetect,SerializerFeature.WriteMapNullValue);fastConverter.setFastJsonConfig(fastJsonConfig);//将fastjson添加到视图消息转换器列表内converters.add(fastConverter);}/*** 配置拦截器** @param registry InterceptorRegistry*/@Overridepublic void addInterceptors(InterceptorRegistry registry) {}@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/**").addResourceLocations("classpath:/**");}}

以上为个人学习分享,如有问题,欢迎指出:)

相关文章:

  • 参数/非参数检验和连续/离散/分类等变量类型的关系
  • Rust 开发的一些GUI库
  • Reactor和Proactor
  • React从基础入门到高级实战:React 核心技术 - 错误处理与错误边界:构建稳定的应用
  • React 虚拟dom
  • Rust语言学习教程、案例与项目实战指引
  • 甲醇 燃料 不也有碳排放吗?【AI回答版】
  • FPGA 的分类和发展
  • Rust 学习笔记:关于闭包的练习题
  • 运维自动化工具 ansible 知识点总结
  • 怎么查找idea插件的下载位置,并更改
  • 探究Azure devops 流水线缓存
  • 2025年5月蓝桥杯stema省赛真题——象棋移动
  • 测试报告里都包含哪些内容?
  • LLM 驱动的 Go 到 Rust 项目迁移的挑战与实践
  • 如何从经纬度数据中判断哪个是经纬度
  • Spring Boot 3.4.6 中文文档上线
  • 分布式爬虫监控架构设计
  • NFS 挂载配置与优化最佳实践指南
  • VUE项目部署IIS服务器手册
  • 长沙网站运营/网络推广网上营销
  • 住房和城乡建设部主网站/百度云盘登录
  • 内容营销怎么做/西安网站优化公司
  • 东莞饰品网站建设/如何宣传推广自己的产品
  • 沈阳装修公司网站建设/百度网络营销推广
  • 深圳网站维护/百度数据中心