如何解决在 Spring Boot 中,对于某些链接,除了 GET 之外,不允许任何其他操作
我有一个简单的博客网页,里面有很多链接。他们都在使用 GetMapping
。因此,每当我让机器人尝试使用 POST 访问这些页面时,我都会收到一条错误消息
Request method 'Post' not supported.
我知道这是因为我使用了 @GetMapping
,如果我切换到 @RequestMapping
,那么一切都会好起来的。但是,我不想让任何人通过 POST 访问我的博客。唯一应该是 POST 的页面是 /contact/message
,除了该页面所有内容都应该通过 GET 访问。
所以我有两个问题:
我如何强制人们只使用 GET。
如何捕获使用 POST 的尝试并将其重定向到 /error
?
旁注:我不使用 spring 安全,没有登录或隐藏在帐户后面的任何内容。我的大部分映射都使用正则表达式。不知道这个信息有没有帮助。
@GetMapping(value = {
"","{page:^[1-9][0-9]*$}","{section:^\\d*[a-zA-Z][a-zA-Z0-9]*[^.]+$}","{section:^\\d*[a-zA-Z][a-zA-Z0-9]*[^.]+$}/{page:^[1-9][0-9]*$}"})
解决方法
您可以在应用程序中添加过滤器:
public class Tfil implements Filter {
@Override
public void doFilter(ServletRequest servletRequest,ServletResponse servletResponse,FilterChain filterChain) throws IOException,ServletException {
HttpServletRequest req = (HttpServletRequest) servletRequest;
if (!"GET".equals(req.getMethod())) {
//redirect or error page
HttpServletResponse res = (HttpServletResponse) servletResponse;
//here redirect
res.sendRedirect("redirect url");
//or return 404 code
res.setStatus(404);
}
filterChain.doFilter(servletRequest,servletResponse);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。