在从3.2迁移到4.1之后,Spring MVC中的POST请求不起作用
我发送POST请求
$.ajax({
type: "POST",
url: "/common/ajax/advert/",
data: data,
dataType: "json",
contentType: "application/json",
success: function(r){}
});
到控制器
@Controller
@RequestMapping(value = "/common/ajax/advert")
public class Controller {
@RequestMapping(value="/", method=RequestMethod.POST)
@ResponseBody
public Map<String,Object> adsSearch(@RequestBody Map<String,Object> data){
Map<String,Object> result = new HashMap<String,Object>();
List<Advert> ads = advSrv.getAds(data);
result.put("obj", ads);
return result;
}
并返回404错误,但在春季3.2这工作正常。
RequestMethod.GET的控制器在旧版本和新版本中正常工作。
请帮我解决它。
UPD.1我试图用RequestMethod.POST创建一个@RestController类(Spring 4.1) - 并且它也不工作。
UPD.2在日志中,Spring正确地映射了这些方法,但发布请求没有被处理(与获取请求不同,它们工作正常)。
最后我发现了一个问题 - 升级到4.0后,它是Spring Security,默认启用csrf保护:
DEBUG: org.springframework.security.web.csrf.CsrfFilter - Invalid CSRF token found for post-request
我添加了支持csrf保护并正常工作。
链接地址: http://www.djcxy.com/p/48477.html上一篇: POST request in Spring MVC not work after migration from 3.2 to 4.1
下一篇: spring mvc controller accept JSON object with variable number of keys/values