Spring MVC Post请求返回403错误,Get请求却正常,可能是安全框架引起的前端解决办法
原文地址:http://blog.csdn.net/t894690230/article/details/52404105
困惑:很奇怪,明明在方法上面配置了RequestMethod.POST,POST表单提交却返回403状态码,可是使用GET方式却没问题啊!!!
@RequestMapping(value="***", method = { RequestMethod.POST })
public ModelAndView edit() {
ModelAndView model = new ModelAndView("**");
return model;
}
难道这配置会有问题?!!!!
原因分析:如果是使用的是 Java 代码配置 spring Security,那么 CSRF 保护默认是开启的,那么在 POST 方式提交表单的时候就必须验证 Token,如果没有,那么自然也就是 403 没权限了。
解决方式:这里主要有两种解决方式
1) 关闭 CSRF 保护:
@Override
protected void configure (HttpSecurity http) throws Exception {
http.csrf().disable();
2) 添加 CSRF
如果是表单提交那么,可以添加一个隐藏输入框:
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
如果是 Ajax 提交,那么可以在提交时将 Token 一起提交:
$.ajax({
type: "POST",
url: "***",
data: {content:content, "${_csrf.parameterName}":"${_csrf.token}"},
error: function() {
},
success:function(data) {
}
});
如果不想在每个 Ajax提交时都带上这个,那么也可以这样,首先在 Header添加 meta:
<html>
<head>
<meta name="_csrf" content="${_csrf.token}"/>
<!-- default header name is X-CSRF-TOKEN -->
<meta name="_csrf_header" content="${_csrf.headerName}"/>
<!-- ... -->
</head>
<!-- ... -->
然后再每次 Ajax 提交前,插入 Token:
$(function () {
var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");
$(document).ajaxSend(function(e, xhr, options) {
xhr.setRequestHeader(header, token);
});
});
这样在 Ajax 提交时会自动将 token一并提交(在 header 里,而不是表单数据里了),那么也就可以通过验证了。
以上。
Spring MVC Post请求返回403错误,Get请求却正常,可能是安全框架引起的前端解决办法的更多相关文章
- (原创)spring mvc和jersey rest 组合使用时单例对像实例化两次的BUG及解决办法
项目中没用spring 的restTemplate 而是采用 jersey来做rest 的实现,一直用着,也没发现有什么不对,后来加入了,以quartz用硬编码方式实现,结果启动项目的时候报错 ,具体 ...
- Spring MVC 3.0 返回JSON数据的方法
Spring MVC 3.0 返回JSON数据的方法1. 直接 PrintWriter 输出2. 使用 JSP 视图3. 使用Spring内置的支持// Spring MVC 配置<bean c ...
- Spring MVC Rest服务 返回json报406错误的解决办法
@ResponseBody & @RequestBody @RequestBody 将 HTTP 请求正文插入方法中,使用适合的HttpMessageConverter将请求体写入某个对象. ...
- Ajax请求Spring Mvc 时总是返回 302 Moved Temporarily
功能上主要是实现在前台点击保存按钮,单元格变成文本框,修改值后请求后台保存数据.但在做的过程中,ajax 请求总是不能请求到后.打开浏览器调试,查看到http状态码总是返回 http/1.1 302 ...
- Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装
阅读目录 1. 通过HttpServletRequest获得请求参数和数据 2. 处理方法形参名==请求参数名 3. 如果形参名跟请求参数名不一样怎么办呢?用@RequestParam注解 4. 用实 ...
- Spring MVC的Rest URL 被错误解析成jsp, 导致404错误(XML方式下@Controller和@RestController需要配置<mvc:annotation-driving/>)
问题: 最近在原有MVC的WEB应用中添加一个REST服务,结果始终报404错误.把 Spring debug 日志打开,发现处理REST请求的Controller已经正确进入 [org.spring ...
- 0056 Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装
浏览器总会向服务器传递一些参数,那么Spring MVC如何接收这些参数? 先写个简单的html,向服务器传递一些书籍信息,如下: <!DOCTYPE html> <html> ...
- Spring MVC异常统一处理(包括普通请求异常以及ajax请求异常)
通常SpringMVC对异常的配置都是返回某个jsp视图给用户,但是通过ajax方式发起请求,即使发生异常,前台也无法获得任何异常提示信息.因此需要对异常进行统一的处理,对于普通请求以及ajax请求的 ...
- Spring MVC灵活控制返回json的值(自定义过滤字段)
在使用spring MVC开发过程中,为了提高项目执行效率,所以在一些外键字段的实体中会注解”@ManyToOne(fetch = FetchType.LAZY)”以实现延迟加载的效果. 但是,在使用 ...
随机推荐
- ctfd搭建
CTFd 0x00 前言 搭个CTF平台,看能不能带动一下学校的CTF参与度. 一个下午都在搭这个平台:O 抓瞎摸索,最后成功用Apache+mod_wsgi也算是功德圆满了. 进入正题: 系统: C ...
- PAT Basic 1004 成绩排名 (20 分)
读入 n(>)名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式: 每个测试输入包含 1 个测试用例,格式为 第 1 行:正整数 n 第 2 行:第 1 个学生的姓 ...
- 多个jar包合并成一个jar包(ant)
https://blog.csdn.net/gzl003csdn/article/details/53539133 多个jar包合并成一个jar 使用Apache的Ant是一个基于Java的生成工具. ...
- A Neural Probabilistic Language Model (2003)论文要点
论文链接:http://www.jmlr.org/papers/volume3/bengio03a/bengio03a.pdf 解决n-gram语言模型(比如tri-gram以上)的组合爆炸问题,引入 ...
- java8 lambda表达式应用
1.用lambda表达式实现Runnable非常简单// Java 8之前: new Thread(new Runnable() { @Override public void run() { Sys ...
- Restricting Input in HTML Textboxes to Numeric Values
Ok, here’s a fairly basic one – how to force a textbox to accept only numeric input. Somebody asked ...
- 第07课:【实战】调试Redis准备工作
7.1 Redis源码下载与编译 Redis源码下载与编译在前面已经说过了,同学们可以去第04课:GDB常用命令详解(上)学习. 编译成功后,会在src目录下生成多个可执行程序,其中redis-ser ...
- linux学习:【第2篇】之常见命令
linux之常见命令 创建一个目录 /data mkdir /data ls -l /data/ cd /data/ pwd 相对路径与绝对路径 1.绝对路径 从根开始的路径 /data 2.相对路径 ...
- C#使用BinaryReader类读取二进制文件
Close():关闭BinaryReader对象: Read():从指定流读取数据,并将指针迁移,指向下一个字符. ReadDecimal():从指定流读取一个十进制数值,并将在流中的位置向前 ...
- FM算法详解
https://blog.csdn.net/jediael_lu/article/details/77772565 https://blog.csdn.net/bitcarmanlee/article ...