[英]POST request in Spring MVC not work after migration from 3.2 to 4.1
我发送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错误,但在Spring 3.2中可以正常工作。
带有RequestMethod.GET的控制器在新旧版本中均可正常工作。
请帮助我修复它。
UPD.1我试图用RequestMethod.POST创建一个@RestController类(Spring 4.1),但它也无法正常工作。
UPD.2在日志中,Spring正确地映射了此方法,但后请求未得到处理(与get请求不同,它们工作正常)。
最后,我发现了一个问题-升级到4.0后是Spring Security,默认情况下启用了csrf保护:
DEBUG: org.springframework.security.web.csrf.CsrfFilter - Invalid CSRF token found for post-request
我添加了支持csrf的保护,并且一切正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.