Maison  >  Article  >  interface Web  >  Nodejs gère les demandes d'options

Nodejs gère les demandes d'options

WBOY
WBOYoriginal
2023-05-25 10:46:371081parcourir

Lorsque vous effectuez une requête HTTP, vous pouvez rencontrer une requête appelée OPTIONS, qui est une requête de contrôle en amont utilisée pour vérifier si le serveur autorise la requête avant d'envoyer la requête réelle. Étant donné que ce type de requête n'est pas une requête régulière comme GET ou POST, il y aura parfois des problèmes dans le traitement côté serveur. Dans cet article, nous expliquerons comment gérer les requêtes OPTIONS à l'aide de Node.js.

Qu'est-ce qu'une demande OPTIONS ? La requête

OPTIONS est une requête HTTP utilisée pour vérifier si une requête interdomaine spécifique est autorisée côté serveur. Lorsque vous utilisez l'objet XMLHttpRequest ou l'API Fetch pour envoyer une requête inter-domaines, le navigateur enverra d'abord une requête OPTIONS pour vérifier si le serveur prend en charge la requête. Si aucune réponse n'est reçue du serveur, le navigateur refuse d'envoyer la demande.

Étapes pour gérer les demandes OPTIONS

Avant de traiter les demandes OPTIONS, comprenez d'abord les méthodes courantes de traitement des demandes inter-domaines. Les méthodes couramment utilisées sont CORS (Cross-Origin Resource Sharing) et JSONP (JSON avec remplissage). Ensuite, nous utiliserons CORS pour gérer les requêtes OPTIONS.

CORS est un en-tête de requête HTTP standard utilisé pour la communication inter-domaines entre les navigateurs et les serveurs. En définissant des en-têtes CORS tels que Access-Control-Allow-Origin et Access-Control-Allow-Methods, vous pouvez autoriser ou restreindre l'accès inter-domaines à des noms de domaine spécifiques. Voyons maintenant comment ajouter des en-têtes CORS à notre application Node.js :

  1. Installer le framework express

Tout d'abord, vous devez installer le framework express. Nous pouvons l'installer en utilisant la commande suivante :

npm install express
  1. Create Server

Ensuite, nous devons créer un serveur. Un serveur Express peut être créé et démarré en utilisant le code suivant :

const express = require('express');
const app = express();

app.listen(8080, () => {
    console.log(`Server is listening on port 8080`);
});
  1. Gestion des requêtes OPTIONS

En express, vous pouvez utiliser la méthode use pour gérer tous les types de routes. Avant de traiter la requête OPTIONS, créons une route de base pour tester si le serveur fonctionne correctement :

app.use('/', (req, res) => {
    res.send('Hello World!');
});

Maintenant, nous devons gérer la requête OPTIONS. Voici un exemple basique :

app.use('*', (req, res, next) => {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
    res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');

    // 跨域请求CORS前置验证时,会发出OPTIONS请求
    if (req.method === 'OPTIONS') {
        res.status(200).end();
    } else {
        next();
    }
});

Ici, nous utilisons la méthode use dans Express pour gérer toutes les routes. Nous définissons trois en-têtes CORS : Access-Control-Allow-Origin, Access-Control-Allow-Methods et Access-Control-Allow-Headers. Lors du traitement d'une requête OPTIONS, le serveur doit renvoyer une réponse 200 OK. Les autres requêtes HTTP doivent être transmises au gestionnaire de route suivant à l'aide de la méthode next().

Voici les étapes de base pour gérer les requêtes OPTIONS à l'aide de Node.js. La requête

Conclusion

OPTIONS est une requête de contrôle en amont qui vérifie si le serveur autorise une requête inter-domaines spécifique. Comme il ne s'agit pas d'une requête régulière, elle doit être traitée spécialement côté serveur. Dans cet article, nous avons expliqué comment utiliser CORS dans Node.js pour gérer les requêtes OPTIONS. Lorsque vous rencontrez une requête OPTIONS, assurez-vous de renvoyer une réponse 200 OK pour permettre au navigateur de traiter la requête 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:
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