Maison >interface Web >Questions et réponses frontales >Comment configurer l'autorisation des requêtes inter-domaines à l'aide de Node.js

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

PHPz
PHPzoriginal
2023-04-05 09:09:261876parcourir

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

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');
});

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');
});

在以上示例中,我们使用了 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!

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