Maison  >  Article  >  interface Web  >  Nodejs implémente le cross-domain

Nodejs implémente le cross-domain

WBOY
WBOYoriginal
2023-05-25 13:38:381675parcourir

Cross-domain fait référence à un document ou à un script dans un domaine essayant de demander des ressources dans un autre domaine. Dans ce cas, des problèmes inter-domaines se produiront car le navigateur a une politique de même origine, qui tente de maximiser la sécurité des applications Web. . Autrement dit, les scripts clients de différents domaines ne peuvent pas lire ou écrire le contenu des documents des autres sans autorisation explicite.

Node.js est un environnement d'exécution JavaScript côté serveur populaire qui facilite la création d'applications Web. Dans Node.js, nous pouvons utiliser plusieurs méthodes pour gérer les requêtes inter-domaines. Voici quelques méthodes de traitement inter-domaines courantes :

1. Utiliser CORS

CORS est l'abréviation de "Partage de ressources inter-domaines". Il s'agit d'une solution inter-domaines standardisée qui permet au serveur d'envoyer des informations d'autorisation au serveur. client, permettant ainsi aux clients d'accéder aux ressources d'autres domaines. Dans Node.js, les requêtes inter-domaines peuvent être réalisées en utilisant CORS.

Il est très simple d'utiliser CORS pour résoudre des problèmes inter-domaines dans Node.js. Il vous suffit d'installer et d'utiliser le module cors. L'exemple de code est le suivant :

const express = require('express');
const cors = require('cors');
const app = express();
 
app.use(cors());
 
app.get('/api/data', function (req, res) {
  // 处理请求
});
 
app.listen(3000, function () {
  console.log('Server listening on port 3000');
});

2. Utilisez JSONP

JSONP. Méthode très ancienne de résolution de problèmes inter-domaines, elle tire parti de la fonctionnalité inter-domaines de l'attribut src dans les balises HTML et obtient indirectement des données dans d'autres domaines en générant dynamiquement une balise de script et en définissant son attribut src. Dans Node.js, les requêtes inter-domaines peuvent être réalisées en utilisant JSONP. L'exemple de code est le suivant :

const express = require('express');
const app = express();
 
app.get('/api/data', function (req, res) {
  const callback = req.query.callback;
  // 处理请求
  res.send(callback + '(' + JSON.stringify(data) + ');');
});
 
app.listen(3000, function () {
  console.log('Server listening on port 3000');
});

3 Utilisation d'un serveur proxy

Un serveur proxy est un serveur qui transmet les requêtes des clients au serveur vers d'autres serveurs. , grâce à l'utilisation d'un serveur proxy, les demandes des clients peuvent être transmises aux ressources d'autres domaines côté serveur, atteignant ainsi des objectifs inter-domaines. Dans Node.js, vous pouvez utiliser http-proxy-middleware pour créer un serveur proxy. L'exemple de code est le suivant :

const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');
const app = express();
 
app.use('/api', createProxyMiddleware({
  target: 'http://example.com',
  changeOrigin: true,
}));
 
app.listen(3000, function () {
  console.log('Server listening on port 3000');
});

Résumé

Il existe de nombreuses façons de réaliser du cross-domain dans Node.js, parmi lesquelles l'utilisation de CORS. est une solution de comparaison pratique et standardisée, tandis que l'utilisation de JSONP et d'un serveur proxy est une solution moins utilisée mais toujours réalisable. La solution à utiliser peut être choisie en fonction de besoins et de scénarios spécifiques, mais il convient de noter que les opérations inter-domaines peuvent affecter la sécurité des applications Web, vous devez donc agir avec prudence.

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