编程语言
首页 > 编程语言> > 关于java防止csrf的问题

关于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进行配置,代码中是不支持通配符/*,逗号分割网址

标签:java,csrf,域名,403,registry,防止,同源,过滤器,allowedOriginPatterns
来源: https://www.cnblogs.com/kangkin/p/16552759.html