Spring Boot设置跨域访问

作者: 郭寻抚 | 来源:发表于2016-09-08 15:51 被阅读9977次

1. 什么是跨域HTTP请求

现代浏览器出于安全的考虑,使用 XMLHttpRequest对象发起 HTTP请求时必须遵守同源策略,否则就是跨域的HTTP请求,默认情况下是被禁止的。跨域HTTP请求是指A域上资源请求了B域上的资源,举例而言,部署在A机器上Nginx上的js代码通过ajax请求了部署在B机器Tomcat上的RESTful接口。

IP(域名)不同、或者端口不同,都会造成跨域问题。为了解决跨域的问题,曾经出现过jsonp、代理文件等方案,应用场景受限,维护成本高,直到HTML5带来了CORS协议。

CORS是一个W3C标准,全称是”跨域资源共享”(Cross-origin resource sharing),允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。它通过服务器增加一个特殊的Header[Access-Control-Allow-Origin]来告诉客户端跨域的限制,如果浏览器支持CORS、并且判断Origin通过的话,就会允许XMLHttpRequest发起跨域请求。

CROS常见header

  • Access-Control-Allow-Origin:http://somehost.com 表示允许http://somehost.com发起跨域请求。

  • Access-Control-Max-Age:86400 表示在86400秒内不需要再发送预校验请求。

  • Access-Control-Allow-Methods: GET,POST,PUT,DELETE 表示允许跨域请求的方法。

  • Access-Control-Allow-Headers: content-type 表示允许跨域请求包含content-type

2. 在spring boot工程中配置CORS跨域

这里匹配了所有的URL,允许所有的外域发起跨域请求,允许外域发起请求任意HTTP Method,允许跨域请求包含任意的头信息。

@Configuration
public class CORSConfiguration {
    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**")
                        .allowedHeaders("*")
                        .allowedMethods("*")
                        .allowedOrigins("*");
            }
        };
    }
}

也可以参考:https://spring.io/guides/gs/rest-service-cors/
跨域资源共享 CORS 详解:http://www.ruanyifeng.com/blog/2016/04/cors.html

相关文章

  • Spring Boot设置跨域访问

    1. 什么是跨域HTTP请求 现代浏览器出于安全的考虑,使用 XMLHttpRequest对象发起 HTTP请求时...

  • Spring Boot 跨域访问

    如何在 Spring Boot 中配置跨域访问呢?Spring Boot 提供了对 CORS 的支持,您可以实现W...

  • 跨域配置

    SpringBoot跨域配置 我们的后端使用Spring Boot。Spring Boot跨域非常简单,只需书写以...

  • Spring boot2.4版本跨域问题

    问题描述 spring boot2.4版本之后,延用2.3的跨域方式,访问swagger出错. 2.3版本跨域配置...

  • Spring Boot 跨域访问

    什么是跨域访问 当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时 ,资源会发起一个跨 域 HTTP...

  • 2018-12-11

    spring security 的跨域问题 spring security跨域设置 在spring-sercuri...

  • 2019-04-01

    Spring Boot轻松跨域:Spring Boot中采用注解轻松实现跨域的一个基础例子 1.项目结构,conf...

  • 响应头设置跨域和Spring注解跨域

    CORS跨域原理详解Spring解决跨域 响应头设置跨域 Spring注解跨域@CrossOrigin 可添加到方...

  • Spring Boot设置跨域

    跨域是很多应用都会遇到的问题。 Spring Boot2.0之前继承WebMvcConfigurerAdapte即...

  • C# Web直接上传视频或者文件到OSS

    代码 解决本地调试跨域问题 设置跨域规则:找到OSS存储——Bucket列表——基础设置——跨域访问——设置 暴露...

网友评论

  • Java攻城狮:其实也能这样配置
    @Bean
    public CorsFilter corsFilter() {
    final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
    final CorsConfiguration corsConfiguration = new CorsConfiguration();
    corsConfiguration.setAllowCredentials(true);
    ArrayList<String> originHeaders = new ArrayList<>();
    originHeaders.add("http://localhost:9528";);
    corsConfiguration.setAllowedOrigins(originHeaders);
    corsConfiguration.addAllowedHeader("*");
    corsConfiguration.addAllowedMethod("*");
    urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
    return new CorsFilter(urlBasedCorsConfigurationSource);
    }
  • windersehen:springboot配置解决了我的问题,感谢楼主分享
  • 徽鲸:一劳永逸的解决这个问题的方法就是在过滤器中设置这些

本文标题:Spring Boot设置跨域访问

本文链接:https://www.haomeiwen.com/subject/qdbsettx.html