我在应用程序中创建了一个自定义表单,并将其设置为由我的一个RestControllers映射的URL。我发送表单,并在浏览器中收到以下错误消息:
您的请求无法处理 抱歉,发生了错误。
状态:禁止(禁止) 消息:无效的CSRF令牌' null'在请求参数' _csrf'上找到或标题' X-CSRF-TOKEN'。
我在请求本身和我发现的标题中看了一下chrome dev工具:
的Cookie:访问=是; NG_TRANSLATE_LANG_KEY =%22en%22; tmhDynamicLocale.locale =%22en%22; JSESSIONID = FB0F8F19DE9B17AE4038C0149A81D829; SPRING_SECURITY_REMEMBER_ME_COOKIE = NEY5SnBQMUExcForNWFuUzVJbWlpdz09OmErQkE0bWZhbURubzFDamd5ckNJUUE9PQ; CSRF-TOKEN = ab678757-2326-4ebe-99e5-c97c1372fc9a
这是否意味着请求获得了CSRF令牌,但名称错误或者其他内容完全不同?如何将正确的CSRF令牌插入表单中,或者如何自动到达?
答案 0 :(得分:4)
如果您只想看到您的表单正常工作,您可以对URL表单禁用CSRF保护。只需在web.ignoring()
在SecurityConfiguration.java
上,找到configure
方法并添加如下条目:
web.ignoring()
.antMatchers("/api/yoururl/**")
.antMatchers("/scripts/**/*.{js,html}")
.antMatchers("/bower_components/**")
.antMatchers("/i18n/**")
.antMatchers("/assets/**")
.antMatchers("/swagger-ui/**")
.antMatchers("/test/**")
.antMatchers("/console/**");