Table des matières
NetTy4 WebSocket Server: Gérez correctement les réponses du navigateur 401
Maison Java javaDidacticiel Lors du développement d'un serveur WebSocket à l'aide de NetTy4, comment vous assurez-vous que le navigateur reconnaît correctement la réponse 401?

Lors du développement d'un serveur WebSocket à l'aide de NetTy4, comment vous assurez-vous que le navigateur reconnaît correctement la réponse 401?

Apr 19, 2025 pm 03:18 PM
浏览器 ai

Lors du développement d'un serveur WebSocket à l'aide de NetTy4, comment vous assurez-vous que le navigateur reconnaît correctement la réponse 401?

NetTy4 WebSocket Server: Gérez correctement les réponses du navigateur 401

Lors du développement de serveurs WebSocket à l'aide de NetTy4, il est souvent nécessaire de vérifier le jeton client. Si la vérification échoue, le serveur doit renvoyer le code d'état 401 et fermer la connexion. Cependant, les navigateurs ne parviennent parfois pas à recevoir cette réponse correctement. Cet article expliquera en détail comment résoudre ce problème.

Question: Utilisez var socket = new WebSocket("ws://127.0.0.1:18080/ws?token=xxxx"); Pour se connecter au serveur et le serveur vérifie le jeton. En cas de défaillance, le serveur renvoie 401 et ferme la connexion, mais le navigateur ne reçoit pas de réponse 401. L'extrait de code serveur est le suivant:

 private void httpResponse401 (ChannelHandlerContext ctx, fullhttprequest request) {
    FullHttpResponse Response = new DefaultfullHttpResponse (request.protoColVersion (), httpResponSestatus.unAuthorized);
    réponse.Headers (). set (httpheadernames.content_length, 0);
    ctx.writeAndFlush (Response) .AddListener (ChannelfUTUreListener.close);
    REFORENCECOUNTUTIL.Release (demande);
}
Copier après la connexion

Cause: Le problème réside dans l'étape de la poignée de main WebSocket. La demande de poignée de main est une demande HTTP, mais une fois la poignée de main qui réussit, la communication n'est plus un protocole HTTP. Par conséquent, la réponse 401 doit être retournée dans la phase de poignée de main.

Solution: Vérifiez le jeton dans le code qui gère la demande de poignée de main WebSocket. Si la vérification échoue, la réponse 401 est directement renvoyée et la logique d'établissement de connexion WebSocket n'est pas exécutée.

Exemple de code amélioré:

 @Outrepasser
public void ChannelRead (ChannelHandlerContext CTX, objet msg) lève une exception {
    if (msg instanceof fullHttpRequest) {
        FullHttpRequest request = (fullHttpRequest) msg;
        String token = extractTokenFromRequest (request); // Extraire la fonction d'assistance du jeton if (! ValidateToken (jeton)) {
            HTTPRESPONSE401 (CTX, demande);
            retour;
        }

        // La vérification des jetons est passée, continuez WebSocket Handshake WebSocketServerHandshakerFactory WSFactory = new WebSocketServerHandshakerFactory (
                getwebsocketLocation (demande), null, false);
        WebSocketServerHandshaker Handshaker = wsfactory.newhandshaker (demande);
        if (handshaker == null) {
            WebsocketServerHandshakerFactory.SendUnSupportEdVersionResponse (ctx.Channel ());
        } autre {
            Handshaker.Handshake (ctx.Channel (), demande);
        }
    } else if (msg instanceof websocketframe) {
        // traite les cadres WebSocket}
}

chaîne privée ExtractTokenFromRequest (requête fullHttpRequest) {
    String uri = request.uri ();
    String [] parties = uri.split ("\\?");
    if (part.length> 1) {
        String [] params = parties [1] .split ("&");
        pour (String Param: params) {
            String [] keyValue = param.split ("=");
            if (keyvalue.length == 2 && keyvalue [0] .equals ("token")) {
                return keyValue [1];
            }
        }
    }
    retourner null;
}


Boolean ValidateToken privé (jeton de chaîne) {
    // Implémentez la logique de vérification du jet // Exemple, remplacez par la logique de vérification réelle}

private void httpResponse401 (ChannelHandlerContext ctx, fullhttprequest request) {
    FullHttpResponse Response = new defaultullHttpResponse (
            Httpversion.http_1_1, httpResponsestatus.unAuthorized);
    réponse.Headers (). Set (httpheadernames.content_type, "text / plain; charset = utf-8");
    Response.Headers (). Set (httpheadernames.content_length, réponse.Content (). ReadableBytes ());
    ctx.writeAndFlush (Response) .AddListener (ChannelfUTUreListener.close);
    REFORENCECOUNTUTIL.Release (demande);
}
Copier après la connexion

En effectuant une vérification des jetons pendant la phase de poignée de main et en renvoyant une réponse 401, le navigateur peut identifier correctement la raison de la fermeture de la connexion, permettant ainsi un serveur WebSocket plus robuste. extractTokenFromRequest améliore la robustesse de l'extraction de jetons. Veuillez remplacer token dans l'exemple par votre logique de vérification réelle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Que signifie la transaction transversale? Quelles sont les transactions transversales? Que signifie la transaction transversale? Quelles sont les transactions transversales? Apr 21, 2025 pm 11:39 PM

Échanges qui prennent en charge les transactions transversales: 1. Binance, 2. UniSwap, 3. Sushiswap, 4. Curve Finance, 5. Thorchain, 6. 1inch Exchange, 7. DLN Trade, ces plateformes prennent en charge les transactions d'actifs multi-chaînes via diverses technologies.

Quel est le tableau d'analyse de la structure du produit fini par Bitcoin? Comment dessiner? Quel est le tableau d'analyse de la structure du produit fini par Bitcoin? Comment dessiner? Apr 21, 2025 pm 07:42 PM

Les étapes pour dessiner un tableau d'analyse de structure Bitcoin comprennent: 1. Déterminez l'objectif et le public du dessin, 2. Sélectionnez le bon outil, 3. Concevez le cadre et remplissez les composants principaux, 4. Reportez-vous au modèle existant. Les étapes complètes garantissent que le graphique est exact et facile à comprendre.

Aavenomics est une recommandation pour modifier le jeton Aave Protocol et introduire le rachat de jetons, qui a atteint le nombre de personnes quorum. Aavenomics est une recommandation pour modifier le jeton Aave Protocol et introduire le rachat de jetons, qui a atteint le nombre de personnes quorum. Apr 21, 2025 pm 06:24 PM

Aavenomics est une proposition de modification du jeton de protocole Aave et d'introduire des dépens de jetons, qui a mis en œuvre un quorum pour Aavedao. Marc Zeller, fondateur de l'Aave Project Chain (ACI), l'a annoncé sur X, notant qu'il marque une nouvelle ère pour l'accord. Marc Zeller, fondateur de l'Aave Chain Initiative (ACI), a annoncé sur X que la proposition d'Aavenomics comprend la modification du jeton Aave Protocol et l'introduction de dépens de jetons, a obtenu un quorum pour Aavedao. Selon Zeller, cela marque une nouvelle ère pour l'accord. Les membres d'Aavedao ont voté massivement pour soutenir la proposition, qui était de 100 par semaine mercredi

Classement des échanges à effet de levier dans le cercle des devises Les dernières recommandations des dix premiers échanges à effet de levier dans le cercle des devises Classement des échanges à effet de levier dans le cercle des devises Les dernières recommandations des dix premiers échanges à effet de levier dans le cercle des devises Apr 21, 2025 pm 11:24 PM

Les plates-formes qui ont des performances exceptionnelles dans le commerce, la sécurité et l'expérience utilisateur en effet de levier en 2025 sont: 1. OKX, adaptés aux traders à haute fréquence, fournissant jusqu'à 100 fois l'effet de levier; 2. Binance, adaptée aux commerçants multi-monnaies du monde entier, offrant un effet de levier 125 fois élevé; 3. Gate.io, adapté aux joueurs de dérivés professionnels, fournissant 100 fois l'effet de levier; 4. Bitget, adapté aux novices et aux commerçants sociaux, fournissant jusqu'à 100 fois l'effet de levier; 5. Kraken, adapté aux investisseurs stables, fournissant 5 fois l'effet de levier; 6. BUTBIT, adapté aux explorateurs Altcoin, fournissant 20 fois l'effet de levier; 7. Kucoin, adapté aux commerçants à faible coût, fournissant 10 fois l'effet de levier; 8. Bitfinex, adapté au jeu senior

Les dix premières recommandations de plate-forme gratuites pour les données en temps réel sur les marchés du cercle de devises sont publiées Les dix premières recommandations de plate-forme gratuites pour les données en temps réel sur les marchés du cercle de devises sont publiées Apr 22, 2025 am 08:12 AM

Les plateformes de données de crypto-monnaie adaptées aux débutants incluent CoinmarketCap et la trompette non à petites choses. 1. CoinmarketCap fournit des classements mondiaux de prix, de valeur marchande et de volume de trading pour les besoins novices et d'analyse de base. 2. La citation non à petites choses fournit une interface adaptée aux Chinois, adaptée aux utilisateurs chinois afin de projeter rapidement des projets potentiels à faible risque.

Quelles sont les plateformes de trading de blockchain hybrides? Quelles sont les plateformes de trading de blockchain hybrides? Apr 21, 2025 pm 11:36 PM

Suggestions de choix d'un échange de crypto-monnaie: 1. Pour les exigences de liquidité, la priorité est Binance, Gate.io ou Okx, en raison de sa profondeur de commande et de sa forte résistance à la volatilité. 2. Conformité et sécurité, Coinbase, Kraken et Gemini ont une approbation réglementaire stricte. 3.

Une liste de services spéciaux pour les principales plateformes de trading de devises virtuelles Une liste de services spéciaux pour les principales plateformes de trading de devises virtuelles Apr 22, 2025 am 08:09 AM

Les investisseurs institutionnels devraient choisir des plateformes conformes telles que Coinbase Pro et Genesis Trading, en se concentrant sur les ratios de stockage du froid et la transparence d'audit; Les investisseurs de détail devraient choisir de grandes plateformes telles que Binance et Huobi, en se concentrant sur l'expérience utilisateur et la sécurité; Les utilisateurs des zones sensibles à la conformité peuvent effectuer un échange de monnaie fiduciaire via Circle Trade et Huobi Global, et les utilisateurs chinois du continent doivent passer par des canaux conformes en vente libre.

Les deux échanges peuvent-ils se convertir des pièces les unes aux autres? Les deux échanges peuvent-ils se convertir des pièces les unes aux autres? Les deux échanges peuvent-ils se convertir des pièces les unes aux autres? Les deux échanges peuvent-ils se convertir des pièces les unes aux autres? Apr 22, 2025 am 08:57 AM

Peut. Les deux échanges peuvent se transférer des pièces les uns vers les autres tant qu'ils prennent en charge la même devise et le même réseau. Les étapes incluent: 1. Obtenez l'adresse de collecte, 2. Initiez une demande de retrait, 3. Attendez la confirmation. Remarques: 1. Sélectionnez le réseau de transfert correct, 2. Vérifiez attentivement l'adresse, 3. Comprenez les frais de manutention, 4. Faites attention à l'heure du compte, 5. Confirmez que l'échange prend en charge cette devise, 6. Faites attention au montant de retrait minimum.

See all articles