Spring MVC REST-阻止对Web方法的访问
我的控制器中有一个方法,它向视图返回一个json字符串Spring MVC REST-阻止对Web方法的访问,spring,spring-mvc,Spring,Spring Mvc,我的控制器中有一个方法,它向视图返回一个json字符串 @RequestMapping(value = "/getDevs", method=RequestMethod.GET) public@ResponseBody String getDevs() throws JsonProcessingException,RemoteException,ServiceException{ ObjectMapper om = new ObjectMapper(); return om.
@RequestMapping(value = "/getDevs", method=RequestMethod.GET)
public@ResponseBody String getDevs() throws JsonProcessingException,RemoteException,ServiceException{
ObjectMapper om = new ObjectMapper();
return om.writeValueAsString(WSCall.getDevelopers());
}
我使用ajax调用该方法URL。一切都很好,除了我可以获得json,如果我把URL直接放在浏览器中。有没有办法阻止这一点?我同意上面的评论,即从安全角度来看,这是不相关的,但您可能可以使用X-request-with:XMLHttpRequest头,它很可能是为AJAX请求设置的。我至少可以为jQuery确认它,它可能在您的工具堆栈中 因此,您可以将headers参数添加到@RequestMapping注释中:
@RequestMapping(value = "/getDevs", method=RequestMethod.GET, headers = { "X-Requested-With=XMLHttpRequest" })
public@ResponseBody String getDevs() throws JsonProcessingException,RemoteException,ServiceException{
[...]
}
为什么通过浏览器访问在任何方面都是特殊的?我不知道我是否理解你。我不知道直接在浏览器中访问方法并获取信息是否会被视为应用程序中的安全问题。这就是我试图阻止它的原因。web浏览器和其他客户端一样是一个客户端。它有一个比curl更好的GUI,但仅此而已。您的AJAX调用无论如何都可以在浏览器的开发人员工具中看到,因此隐藏没有多大意义。但这并不会真正阻止请求,它只会使访问控制器变得更加困难。所以,这样可以吗?此外,对这些URL的访问可以通过Spring安全权限进行控制?我是说用户控制。