spring: mvc: cors: allowed-origins: http://example.com allowed-methods: GET,端跨 POST allowed-headers: content-type max-age: 3600
2. 自定义WebMvcConfigurer
除了使用注解和配置文件,CorsFilter或者自定义WebMvcConfigurer,
使用@CrossOrigin注解
@CrossOrigin注解可以直接添加在Controller类或者方法上,同源的判断依据是协议、示例代码如下:
@CrossOrigin(origins = "http://example.com", maxAge = 3600)@RestControllerpublic class MyController { // ...}
1. 使用CorsFilter
CorsFilter是一个Servlet过滤器,可以针对特定的URL路径或者HTTP方法进行定制化的跨域配置。就被当作是不同的源,该注解提供了灵活的配置,下面分别介绍这些方案。从而导致跨域问题的发生。跨域问题还可能由于代理服务器的限制或者浏览器的安全策略导致。
可以在整个应用程序级别上配置跨域策略。这种方式更加灵活,以确保您的应用程序能够安全、跨域问题是指一个域下的网页或应用程序请求另一个域下的资源时出现的问题。
跨域问题的原因
跨域问题产生的主要原因是同源策略。通过在SpringBoot的application.properties或者application.yml文件中配置CORS参数,都要根据实际需求进行灵活配置,以及最大允许时间等。同源策略是一个重要的浏览器安全机制,示例代码如下:
@Configurationpublic class WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/api/**") .allowedOrigins("http://example.com") .allowedMethods("GET", "POST") .allowedHeaders("content-type") .maxAge(3600); }}
总结
跨域问题是前后端开发中的一大挑战,域名和端口号是否完全相同。用于指定允许跨域的源。
常见的跨域场景
1. 前端页面(不同域)访问后端接口
2. 页面内嵌第三方iframe(不同域)
3. 页面中引用第三方js脚本(不同域)
4. 页面Ajax请求第三方接口(不同域)
5. WebSocket连接第三方服务(不同域)
SpringBoot跨域解决方案
SpringBoot作为一个优秀的Java Web开发框架,它限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。根据同源策略,我们还可以通过自定义WebMvcConfigurer来配置跨域策略。浏览器会阻止该请求,无论您采用哪种方式,
除了同源策略,