Comment configurer l'autorisation des requêtes inter-domaines à l'aide de Node.js

PHPz
Libérer: 2023-04-05 09:40:27
original
1772 Les gens l'ont consulté

Node.js est un environnement d'exécution JavaScript très populaire pour créer des applications et des API côté serveur. Le partage de ressources cross-origine (CORS) est une fonctionnalité essentielle lors de la création d'applications Web ou du développement d'applications JavaScript basées sur des API RESTful. CORS permet aux navigateurs de demander des ressources à différents noms de domaine ou à différents ports sans connaître les détails inter-domaines ni utiliser de serveur proxy. Dans cet article, nous verrons comment configurer l'autorisation des requêtes inter-domaines à l'aide de Node.js.

  1. Qu'est-ce que le partage de ressources entre domaines ?

Le partage de ressources d'origine croisée (CORS) est un mécanisme de sécurité dans les applications Web qui permet aux applications Web de demander et de répondre à des ressources provenant de différents noms de domaine, de différents ports ou de différents protocoles. Par exemple, les requêtes inter-domaines doivent être traitées lors de l'utilisation de JavaScript et d'AJAX pour demander des données d'un domaine à un autre. En raison de la politique de même origine du navigateur, les navigateurs n'autorisent généralement pas les demandes de ressources provenant d'autres domaines, ce qui constitue un risque pour la sécurité.

  1. Utilisez Node.js pour configurer l'autorisation des requêtes inter-domaines

Dans l'environnement Node.js, nous pouvons utiliser le module CORS pour configurer l'autorisation des requêtes inter-domaines. Le module CORS fournit un middleware pour gérer les requêtes inter-domaines. Vous pouvez installer le module à l'aide de la commande npm :

npm install cors
Copier après la connexion

Après l'installation, nous pouvons utiliser CORS dans l'application. Voici un exemple simple :

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

app.use(cors());

app.get('/api/data', (req, res) => {
  // 处理 GET 请求
});

app.post('/api/data', (req, res) => {
  // 处理 POST 请求
});

app.listen(3000, () => {
  console.log('Server is listening on port 3000');
});
Copier après la connexion

Dans l'exemple ci-dessus, nous avons introduit les modules Express et CORS et activé CORS dans l'application Express à l'aide de l'instruction app.use(cors()). Cela permet d'effectuer des types de requêtes GET, POST, etc. à partir de n'importe quelle source sans nécessiter que chaque requête soit traitée individuellement. app.use(cors()) 语句在 Express 应用程序中启用 CORS。这允许从任何来源发起 GET、POST 等类型的请求,而不需要对每个请求进行单独处理。

  1. 高级用法

如果需要更多的控制权和灵活性,我们可以使用 CORS 模块提供的配置选项。以下是一些常用的高级设置:

  • origin:指定允许的请求来源,默认为 *,即所有来源均可。
  • methods:指定允许的 HTTP 请求方法,默认为 'GET,HEAD,PUT,PATCH,POST,DELETE'
  • allowedHeaders:指定允许的请求头数组,默认为空数组,即所有请求头均可。
  • exposedHeaders:指定暴露给客户端的响应头数组,默认为空数组。
  • credentials:指定允许接收跨域 cookie,默认为 false。
  • maxAge:指定预检请求的有效时间(秒),默认为 86400(即一天)。
  • preflightContinue:指定是否继续处理预检请求,默认为 false。

以下是一些示例:

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

app.use(cors({
  origin: 'http://localhost:8080',
  methods: ['GET', 'POST'],
  allowedHeaders: ['Content-Type', 'Authorization'],
  exposedHeaders: ['Content-Length', 'X-Foo', 'X-Bar'],
  credentials: true,
  maxAge: 86400,
  preflightContinue: false
}));

app.get('/api/data', (req, res) => {
  // 处理 GET 请求
});

app.post('/api/data', (req, res) => {
  // 处理 POST 请求
});

app.listen(3000, () => {
  console.log('Server is listening on port 3000');
});
Copier après la connexion

在以上示例中,我们使用了 cors()

    Utilisation avancée
    1. Si vous avez besoin de plus de contrôle et de flexibilité, nous pouvons utiliser les options de configuration fournies par le module CORS. Voici quelques paramètres avancés couramment utilisés :

    origine : spécifiez les sources de requête autorisées, la valeur par défaut est *, c'est-à-dire que toutes les sources sont acceptables.

    🎜méthodes : spécifiez les méthodes de requête HTTP autorisées, la valeur par défaut est 'GET,HEAD,PUT,PATCH,POST,DELETE'. 🎜🎜allowedHeaders : spécifiez le tableau des en-têtes de requête autorisés. La valeur par défaut est un tableau vide, c'est-à-dire que tous les en-têtes de requête sont acceptables. 🎜🎜exposedHeaders : spécifiez le tableau d'en-têtes de réponse exposé au client. La valeur par défaut est un tableau vide. 🎜🎜informations d'identification : spécifiez pour autoriser la réception de cookies inter-domaines, la valeur par défaut est false. 🎜🎜maxAge : Spécifie la durée de validité (en secondes) de la demande de contrôle en amont, la valeur par défaut est 86 400 (soit un jour). 🎜🎜preflightContinue : Spécifie s'il faut continuer à traiter les demandes de contrôle en amont, la valeur par défaut est false. 🎜
🎜Voici quelques exemples : 🎜rrreee🎜Dans l'exemple ci-dessus, nous avons utilisé les options de configuration de cors() pour spécifier les sources de requêtes autorisées, autoriser la réception de cookies inter-domaines, etc. . Ces options peuvent être définies au cas par cas. 🎜🎜🎜Résumé🎜🎜🎜Dans cet article, nous avons expliqué comment configurer l'autorisation des requêtes inter-domaines à l'aide de Node.js. CORS est un mécanisme de sécurité des applications Web très important qui permet les requêtes inter-domaines, rendant l'interaction des données entre les applications Web plus simple et plus sécurisée. Lors de la création d'applications à l'aide de Node.js, nous pouvons utiliser le module CORS pour gérer facilement les requêtes d'origine croisée. 🎜

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!