在从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