当前位置: 首页 > 知识库问答 >
问题:

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

楚钊
2023-03-14

我发送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中此工作正常。

使用Request方法的控制器。GET在旧版本和新版本中正确工作。

请帮我修一下。

UPD。1我试图用RequestMethod创建一个@RestController类(Spring 4.1)。POST——它也不起作用。

UPD.2在日志中Spring正确映射了此方法,但未处理后请求(与get请求不同,它们工作正常)。

共有1个答案

戚繁
2023-03-14

最后我发现了一个问题-升级到4.0后是Spring Security,默认情况下csrf保护启用:

DEBUG: org.springframework.security.web.csrf.CsrfFilter - Invalid CSRF token found for post-request

我添加了支持csrf保护,所有功能都正常工作。

 类似资料:
  • 问题内容: 我正在尝试向Swift发出发布请求。我的目标是将accesstoken facebook发布到服务器,但不起作用。这是代码: 答案如下: 问题答案: 通过这种方式,您可以使用POST Web服务:

  • 我正在尝试通过Laravel中的ajax推送一些数据。不幸的是,它不起作用。当我观察网络流量时,我发现: 我试图从JSGrid中获取数据,这很好。数据对象已填充。我查过了。为了进行测试,我刚刚在控制器中返回了一条短消息。但当我发送邮件请求时,它甚至没有被调用。。。 这是我的密码 Javascript: 路线: 控制器: 我期望从控制器方法中获取JSON文本作为responsemessage。但是我

  • 升级到iOS6.0版本后,ajax登录页面停止工作。看起来像是jquery$发出的ajax post请求。即使添加了随机的querystring参数并将Cache-control设置为“no-cache”(这些都是在网上找到的解决cache问题的方法),ajax仍然在safari中缓存。第一次登录尝试很好,但在第二次登录请求注销后,浏览器不会从服务器获得任何响应体。只有头球。 这同样适用于iOS6

  • 在我的spring MVC应用程序中,我试图发出一个简单的Post请求,但由于请求的主体,它不起作用。我在params中得到了嵌套对象,Spring抛出了这个异常: 下面是我的对象DTO: 和: 我拿到了这些日志:

  • 如果运行,它会失败 未找到基表或视图:1146表*.迁移不存在。 数据库是空的。 如果我运行我会看到迁移表,但它是空的。 DB显示迁移表,但它是空的。 如果我再次运行,数据库再次为空,我会得到相同的错误: 未找到基表或视图:1146表*.迁移不存在。 也许有人知道这里发生了什么。

  • 我试图使用Axios,因为它是NodeJS中唯一具有异步/等待功能的模块。 我已经在Python脚本中有一个POST请求,它工作得很好,我正在尝试适应NodeJS服务器。 但我阻止了我的第一次发帖请求。如果我直接与请求模块一起使用,它工作得很好,请参阅我的代码: 使用Axios(或Axios实例,但稍后使用…)因为我需要保持我的会话(就像在Python中一样,它像一个符咒一样工作)。 而作为响应的