tjh*_*s66 2 rest spring json spring-mvc csrf
我有一个带有Spring Security 4的Spring MVC 4应用程序,并部署在运行于jdk 1.8下的Tomcat 8上.Web服务具有如下定义的控制器:
@RequestMapping(value = "/build", method = RequestMethod.POST, produces = "application/json", headers =
{ "Accept=*/*", "Content-Type=*/*" })
public SubjectEntity build(@RequestBody SubjectImportDTO subjectImportDTO)
{
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
User user = null;
if (principal instanceof User)
{
user = ((User) principal);
}
SubjectEntity entity = service.build(subjectImportDTO);
System.out.println("FINISH: build");
return entity;
}
Run Code Online (Sandbox Code Playgroud)
我得到一个csrf令牌,我有正确的设置.我知道网址被正确调用,因为当我到达那里时,我可以在日志中看到它.后端上的服务正在运行,数据正确输入到数据库中,我正确地获取了写入对象,并且使用Jackson Mapper,对象'SubjectEntity'应该被转换为JSON并发送回请求客户端.这个Web服务已经在Spring Web Test框架下进行了单元测试,效果很好!
因此,我很熟悉HTTP 404错误,当传入错误的参数时没有找到URL,或者你正在尝试在GET时进行POST等等.我们可以得到404错误的原因很多. ..
但是......在这种情况下......我们已经获得了URL,执行了代码,然后它拥有了所需的数据.由于Controller说我们有content-type /并且它产生application/json,我不知道还有什么可能是错的?
有任何想法吗?
您应该添加@ResponseBody到您的方法.没有这个,Spring mvc会尝试找到另一个可以发送响应的处理程序方法.
注意:@RestController自动添加@ResponseBody控制器中的每个方法.
| 归档时间: |
|
| 查看次数: |
850 次 |
| 最近记录: |