Heim  >  Artikel  >  Web-Frontend  >  Analysieren Sie die Anwendungsfälle und Lösungen von 4xx-Statuscodes im HTTP-Protokoll

Analysieren Sie die Anwendungsfälle und Lösungen von 4xx-Statuscodes im HTTP-Protokoll

WBOY
WBOYOriginal
2023-12-26 09:00:58851Durchsuche

Analysieren Sie die Anwendungsfälle und Lösungen von 4xx-Statuscodes im HTTP-Protokoll

Entdecken Sie die Anwendungsszenarien und Lösungen von 4xx-Statuscodes im HTTP-Protokoll

Einführung:
In der Webentwicklung spielt das HTTP-Protokoll eine sehr wichtige Rolle. Es definiert die Regeln und Konventionen für die Kommunikation zwischen Clients und Servern. Unter diesen ist der Statuscode eine Kennung, die der Server verwendet, um dem Client den Status der Anforderungsverarbeitung zu übermitteln. Im HTTP-Protokoll zeigen 4xx-Statuscodes an, dass auf der Clientseite ein Fehler aufgetreten ist. In diesem Artikel werden die Anwendungsszenarien und Lösungen von 4xx-Statuscodes untersucht und relevante Codebeispiele bereitgestellt.

1. Anwendungsszenarien:

  1. 400 Ungültige Anfrage: Zeigt an, dass der Client eine ungültige Anfrage eingereicht hat.

    • Szenario 1: Die Anforderungsparameter sind illegal. Beispielsweise fehlen erforderliche Parameter, Parameterwerte haben ein falsches Format usw.
    • Szenario 2: Das Format des Anforderungstexts ist falsch. Beispielsweise sollte der Anforderungstext im JSON-Format vorliegen, die eigentliche Übermittlung erfolgt jedoch im XML-Format.
  2. 401 Nicht autorisiert: Zeigt an, dass der Client nicht authentifiziert ist oder die Authentifizierung fehlschlägt.

    • Szenario 1: Fehlende Authentifizierungsdaten. Beispielsweise muss die Anfrage ein Token oder Cookie enthalten, der Client stellt es jedoch nicht bereit.
    • Szenario 2: Authentifizierung fehlgeschlagen. Beispielsweise ist das bereitgestellte Token oder Cookie abgelaufen oder ungültig.
  3. 403 Verboten: Zeigt an, dass der Server die Anfrage abgelehnt hat.

    • Szenario 1: Der Client hat keine Berechtigung, auf bestimmte Ressourcen zuzugreifen. Versuchen Sie beispielsweise, auf eingeschränkte API-Schnittstellen oder Dateien zuzugreifen.
    • Szenario 2: Die Zugriffshäufigkeit ist zu hoch. Beispielsweise ist der Server auf 100 Anfragen pro Minute begrenzt und der Client überschreitet das Limit.
  4. 404 Nicht gefunden: Zeigt an, dass die vom Client angeforderte Ressource nicht vorhanden ist.

    • Szenario 1: Der angeforderte URL-Pfad existiert nicht. Beispielsweise wurde eine falsche URL-Adresse eingegeben.
    • Szenario 2: Die angeforderte Ressource wurde gelöscht oder verschoben. Greifen Sie beispielsweise auf einen gelöschten Artikel zu.

2. Lösung:

  1. 400 Bad Request-Lösung:

    • Verwenden Sie die Tool-Bibliothek zur Parameterüberprüfung. Überprüfen Sie beispielsweise die Gültigkeit von Anforderungsparametern, z. B. ob die Parameter leer sind, ob die Länge den Anforderungen entspricht usw.
    • Verwenden Sie reguläre Ausdrücke, um das Format des Anforderungstexts zu überprüfen. Beispielsweise werden reguläre Ausdrücke verwendet, um abzugleichen, ob der Anforderungstext bestimmte Formatanforderungen erfüllt.

    Codebeispiel:

    @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 Nicht autorisierte Lösung:

    • Authentifizierungsschnittstelle bereitstellen und Token oder Cookie zurückgeben. Der Client muss jeder Anfrage ein Token oder Cookie hinzufügen.
    • Verwenden Sie Interceptoren, um Schnittstellen abzufangen, die eine Authentifizierung erfordern. Überprüfen Sie, ob der Anforderungsheader ein gültiges Token oder Cookie enthält.

    Codebeispiel:

    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 Verbotene Lösung:

    • Berechtigungskontrolle für jede Ressource. Nur Benutzer mit ausreichenden Berechtigungen haben Zugriff.
    • Verwenden Sie aktuelle Begrenzungstools, um die Häufigkeit von Anfragen zu begrenzen. Wenn die Anforderungshäufigkeit den Grenzwert überschreitet, wird der Statuscode 403 Forbidden zurückgegeben.

    Codebeispiel:

    @RequestMapping(value = "/admin", method = RequestMethod.GET)
    @RequiresRoles("admin")
    public ResponseEntity<String> admin() {
        // 处理业务逻辑
    }
  4. 404 Not Found-Lösung:

    • Eine benutzerdefinierte 404-Seite zurückgeben, wenn der angeforderte URL-Pfad nicht vorhanden ist.
    • Protokolle aufzeichnen und relevantes Personal benachrichtigen. Wenn die angeforderte Ressource gelöscht oder verschoben wurde, benachrichtigen Sie den Client und geben Sie die richtige URL an.

    Codebeispiel:

    @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");
    }

Fazit:
Durch die Untersuchung der Anwendungsszenarien und Lösungen von 4xx-Statuscodes können wir die Bedeutung von 4xx-Statuscodes im HTTP-Protokoll besser verstehen und bei der Entwicklung effektiver mit diesen Fehlerbedingungen umgehen richtig. Die sinnvolle Verwendung von 4xx-Statuscodes kann dem Kunden ein besseres Benutzererlebnis bieten und ist auch bei der Fehlerbehebung und Reparatur hilfreich.

(Hinweis: Die obigen Codebeispiele sind Beispiele für das Java Spring MVC-Framework. Die Implementierungsmethoden anderer Programmiersprachen und Frameworks können unterschiedlich sein, aber die Ideen sind ähnlich)

Das obige ist der detaillierte Inhalt vonAnalysieren Sie die Anwendungsfälle und Lösungen von 4xx-Statuscodes im HTTP-Protokoll. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn