当前位置: 移动技术网 > IT编程>开发语言>Java > SpringSecurity环境下配置CORS跨站资源共享规则

SpringSecurity环境下配置CORS跨站资源共享规则

2019年12月04日  | 移动技术网IT编程  | 我要评论

北海二手房信息,英文转换器,择天记电视剧播出时间

file

一、cors简述

要说明cors(cross origin resourse-sharing) 跨站资源共享,就必须先说同源策略。长话短说,同源策略就是向服务端发起请求的时候,以下三项必须与当前浏览器应用一致:域名、端口、协议。用白话说:就是你的应用发送请求不能访问别人的资源,否则浏览器就会限制你。当然也有例外,如:img、srcipt、iframe等资源引用的html标签不受同源策略的限制。
但是我们实际开发中又经常会跨站访问,比如前后端分离的应用是分开部署的,在浏览器看来是两个域。所以同源策略是用来禁止跨域访问的,cors正好相反是根据自己的需求与规则,有限的开放部分资源的共享。

二、spring-cors规则基础配置

想在spring或spring boot的web环境下实现跨域资源共享,主要有三种实现方式:

  • @crossorigin注解,这个注解是作用于controller类或者请求方法上的,实现局部接口的跨域资源共享。
  • 实现webmvcconfigurer接口addcorsmappings方法,实现全局配置的跨域资源共享。
  • 注入corsfilter过滤器,实现全局配置的跨域资源共享。推荐使用。

这三种实现方式在我的另外一篇文章中已经介绍过,这里就不多做说明了。

三、spring security 中的配置cors

当我们的应用使用了spring security之后,我们会发现上面的配置方法全部失效。此时需要在spring security的websecurityconfigureradapter中的configure(httpsecurity http)配置方法,加上http.cors()配置,第二小节中的配置才会生效。

public class websecurityconfig extends websecurityconfigureradapter {
    @override
    protected void configure(httpsecurity http) throws exception {
        http.cors().and()
        ...
    }
}

另外spring security为我们提供了一种新的cors规则的配置方法:corsconfigurationsource 。使用这种方法实现的效果等同于注入一个corsfilter过滤器。

@bean
corsconfigurationsource corsconfigurationsource() {
    corsconfiguration configuration = new corsconfiguration();
    configuration.setallowedorigins(arrays.aslist("https://example.com"));
    configuration.setallowedmethods(arrays.aslist("get","post"));
    urlbasedcorsconfigurationsource source = new urlbasedcorsconfigurationsource();
    source.registercorsconfiguration("/**", configuration);
    return source;
}

期待您的关注

  • 向您推荐博主的系列文档:
  • 本文转载注明出处(必须带连接,不能只转文字):。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网