关于java防止csrf的问题


目的

当前端在请求 "Origin":"网址"时,需要发出403警告

同源策略

当前端和后端配置的不在同一源下时发错403错误

  1. 使用 WebMvcConfigurer中重写addCorsMappingsallowedOriginPatterns达成同源请求
    但是只能选择一个网址,就需要配置多个域名。
@Configuration
public class CorsConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")	// 允许跨域访问的路径
        //.allowedOrigins("*")	// 允许跨域访问的源
        .allowedOriginPatterns("同源网站")
        .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")	// 允许请求方法
        .maxAge(3600)	// 预检间隔时间
        .allowedHeaders("*") ; // 允许头部设置
       }
}
  1. 使用过滤器实现
    想法是过滤器获取请求头”Origin”的值是否包含同源网站,在进行过滤
    但是在配置servletResponse.setHeader后与前端的值不一致的情况下并不会触发403错误。
    让后想法通过域名判断后把值给registry.allowedOriginPatterns,但是经过日志打印顺序
    发现CorsConfig的执行顺序再过滤器之前。因此这里就达不成子域名也能通过?

总结

如果以后要配多域名,可以在nginx进行配置,代码中是不支持通配符/*,逗号分割网址

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/278974.html

(0)
上一篇 2022年8月5日
下一篇 2022年8月5日

相关推荐

发表回复

登录后才能评论