링크가 많은 간단한 블로그 웹 페이지가 있습니다. 그들은 모두 GetMapping
. 따라서 봇이 POST를 사용하여 해당 페이지에 액세스하려고 할 때마다 다음과 같은 오류가 발생합니다.
Request method 'Post' not supported.
을 사용하기 때문에 발생한다는 것을 이해하며로 @GetMapping
전환하면 @RequestMapping
모든 것이 잘 될 것입니다. 그러나 누군가가 POST로 내 블로그에 액세스하는 것을 허용하고 싶지 않습니다. POST 여야하는 유일한 페이지는 /contact/message
GET을 통해 모든 페이지에 액세스해야한다는 점을 제외하고는 있습니다.
그래서 두 가지 질문이 있습니다. 사람들이 GET 만 사용하도록 강제하는 방법은 무엇입니까? POST를 사용하려는 시도를 포착하고 리디렉션하려면 /error
어떻게합니까?
사이드 노트 : 저는 스프링 보안을 사용하지 않습니다. 로그인이나 계정 뒤에 숨겨져있는 것이 없습니다. 또한 내 매핑의 대부분은 정규식을 사용하고 있습니다. 이 정보가 도움이되는지 여부를 알 수 없습니다.
@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);
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다