> 웹 프론트엔드 > HTML 튜토리얼 > HTTP 프로토콜의 4xx 상태 코드 사용 사례 및 솔루션 분석

HTTP 프로토콜의 4xx 상태 코드 사용 사례 및 솔루션 분석

WBOY
풀어 주다: 2023-12-26 09:00:58
원래의
882명이 탐색했습니다.

HTTP 프로토콜의 4xx 상태 코드 사용 사례 및 솔루션 분석

HTTP 프로토콜의 4xx 상태 코드에 대한 애플리케이션 시나리오와 솔루션을 살펴보세요

소개:
웹 개발에서 HTTP 프로토콜은 매우 중요한 역할을 합니다. 클라이언트와 서버 간의 통신에 대한 규칙과 규칙을 정의합니다. 그 중 상태코드는 서버가 요청 처리 상태를 클라이언트에게 전달하기 위해 사용하는 식별자이다. HTTP 프로토콜에서 4xx 상태 코드는 클라이언트 측에서 오류가 발생했음을 나타냅니다. 이 기사에서는 4xx 상태 코드의 애플리케이션 시나리오와 솔루션을 살펴보고 관련 코드 예제를 제공합니다.

1. 애플리케이션 시나리오:

  1. 400 잘못된 요청: 클라이언트가 잘못된 요청을 제출했음을 나타냅니다.

    • 시나리오 1: 요청 매개변수가 잘못되었습니다. 예를 들어 필수 매개변수가 누락되었거나 매개변수 값의 형식이 잘못된 경우 등이 있습니다.
    • 시나리오 2: 요청 본문 형식이 잘못되었습니다. 예를 들어 요청 본문은 JSON 형식이어야 하지만 실제로 제출되는 내용은 XML 형식입니다.
  2. 401 Unauthorized: 클라이언트가 인증되지 않았거나 인증에 실패했음을 나타냅니다.

    • 시나리오 1: 인증 자격 증명이 없습니다. 예를 들어, 요청에는 토큰이나 쿠키가 있어야 하는데 클라이언트가 이를 제공하지 않습니다.
    • 시나리오 2: 인증에 실패했습니다. 예를 들어, 제공된 토큰 또는 쿠키가 만료되었거나 유효하지 않습니다.
  3. 403 금지됨: 서버가 요청을 거부했음을 나타냅니다.

    • 시나리오 1: 클라이언트에 특정 리소스에 액세스할 수 있는 권한이 없습니다. 예를 들어 제한된 API 인터페이스나 파일에 액세스하려고 합니다.
    • 시나리오 2: 액세스 빈도가 너무 높습니다. 예를 들어 서버는 분당 100개의 요청으로 제한되어 있고 클라이언트는 이 제한을 초과합니다.
  4. 404 찾을 수 없음: 클라이언트가 요청한 리소스가 존재하지 않음을 나타냅니다.

    • 시나리오 1: 요청한 URL 경로가 존재하지 않습니다. 예를 들어, 잘못된 URL 주소가 입력되었습니다.
    • 시나리오 2: 요청한 리소스가 삭제되거나 이동되었습니다. 예를 들어 삭제된 기사에 액세스합니다.

2. 해결 방법:

  1. 400 잘못된 요청 해결 방법:

    • 매개 변수 확인 도구 라이브러리를 사용하세요. 예를 들어, 매개변수가 비어 있는지, 길이가 요구사항을 충족하는지 등 요청 매개변수의 유효성을 확인합니다.
    • 정규식을 사용하여 요청 본문 형식을 확인하세요. 예를 들어 정규식은 요청 본문이 특정 형식 요구 사항을 충족하는지 여부를 일치시키는 데 사용됩니다.

    코드 샘플:

    @RequestMapping(value = "/example", method = RequestMethod.POST)
    public ResponseEntity<String> example(@RequestBody ExampleRequest request) {
        if (StringUtils.isBlank(request.getName())) {
            return ResponseEntity.badRequest().body("Name cannot be blank");
        }
        if (!request.getAge().matches("\d+")) {
            return ResponseEntity.badRequest().body("Age must be a number");
        }
        // 处理正常流程
        return ResponseEntity.ok("Success");
    }
    로그인 후 복사
  2. 401 승인되지 않은 솔루션:

    • 인증 인터페이스를 제공하고 토큰 또는 쿠키를 반환합니다. 클라이언트는 각 요청에 토큰이나 쿠키를 추가해야 합니다.
    • 인증이 필요한 인터페이스를 가로채려면 인터셉터를 사용하세요. 요청 헤더에 유효한 토큰 또는 쿠키가 포함되어 있는지 확인하세요.

    코드 샘플:

    public class AuthInterceptor extends HandlerInterceptorAdapter {
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            String token = request.getHeader("Token");
            if (StringUtils.isBlank(token)) {
                response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
                response.getWriter().println("Authentication failed");
                return false;
            }
            // 验证Token的合法性
            // ...
            return true;
        }
    }
    로그인 후 복사
  3. 403 금지된 솔루션:

    • 각 리소스에 대한 권한 제어. 충분한 권한이 있는 사용자만 액세스할 수 있습니다.
    • 전류 제한 도구를 사용하여 요청 빈도를 제한하세요. 요청 빈도가 한도를 초과하면 403 Forbidden 상태 코드가 반환됩니다.

    코드 샘플:

    @RequestMapping(value = "/admin", method = RequestMethod.GET)
    @RequiresRoles("admin")
    public ResponseEntity<String> admin() {
        // 处理业务逻辑
    }
    로그인 후 복사
  4. 404 찾을 수 없음 해결 방법:

    • 요청한 URL 경로가 존재하지 않는 경우 사용자 정의 404 페이지를 반환합니다.
    • 로그를 기록하고 관련 담당자에게 알립니다. 요청한 리소스가 삭제되거나 이동된 경우 클라이언트에 알리고 올바른 URL 주소를 제공하세요.

    코드 예:

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public ResponseEntity<String> getResource(@PathVariable("id") String id) {
        // 查询资源
        // 若资源不存在,则返回404 Not Found状态码
        if (resource == null) {
            return ResponseEntity.notFound().build();
        }
        // 处理正常流程
        return ResponseEntity.ok("Success");
    }
    로그인 후 복사

결론:
4xx 상태 코드의 응용 시나리오와 솔루션을 탐색함으로써 HTTP 프로토콜에서 4xx 상태 코드의 의미를 더 잘 이해하고 개발에 더 효과적으로 참여할 수 있습니다. 이러한 오류 조건 처리 제대로. 4xx 상태 코드를 합리적으로 사용하면 클라이언트에게 더 나은 사용자 경험을 제공할 수 있으며 문제 해결 및 복구도 용이하게 할 수 있습니다.

(참고: 위의 코드 예제는 Java Spring MVC 프레임워크의 예제입니다. 다른 프로그래밍 언어 및 프레임워크의 구현 방법은 다를 수 있지만 아이디어는 유사합니다.)

위 내용은 HTTP 프로토콜의 4xx 상태 코드 사용 사례 및 솔루션 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿