繁体   English   中英

从3.2迁移到4.1后,Spring MVC中的POST请求不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM