Node.js est un environnement d'exécution côté serveur piloté par JavaScript. Contrairement à l'environnement d'exploitation côté client, les applications côté serveur impliquent généralement des requêtes inter-domaines. Par conséquent, des problèmes inter-domaines existeront également dans Node.js.
Qu'est-ce qu'une requête cross-domain ?
Requête inter-domaines signifie que lorsque le client initie une requête auprès du serveur, la ressource cible demandée est différente du nom de domaine de la page actuelle. Par exemple, si vous utilisez Ajax sur un site Web pour demander des données à un autre site Web ou si vous demandez un serveur informatique à partir d'un téléphone mobile, il s'agit de demandes inter-domaines.
Pourquoi y a-t-il des problèmes inter-domaines ?
La raison du problème avec les requêtes inter-domaines est que les navigateurs suivent la politique de même origine, c'est-à-dire que les pages avec le même nom de domaine, le même port et le même protocole peuvent accéder les unes aux autres. surgir. Par exemple, si vous lancez une demande d'accès à www.baidu.com dans www.example.com, les données ne seront pas obtenues. En effet, le navigateur restreint l'accès aux requêtes inter-domaines et refuse certains comportements pouvant entraîner des problèmes de sécurité.
Comment résoudre les problèmes inter-domaines dans Node.js ?
Il existe de nombreuses façons de résoudre les problèmes inter-domaines dans Node.js. Voici quelques méthodes courantes.
CORS (Cross-Origin Resource Sharing, cross-origin resources Sharing) est un mécanisme par lequel le serveur peut définir des en-têtes de réponse pour indiquer au navigateur quelles requêtes inter-domaines peuvent être autorisées. Dans Node.js, vous pouvez utiliser le module cors pour résoudre rapidement et facilement les problèmes inter-domaines. Le module cors prend en charge la définition des paramètres par défaut et peut également configurer les en-têtes de réponse selon les besoins. L'exemple de code est le suivant :
const express = require('express'); const cors = require('cors'); const app = express(); app.use(cors()); app.get('/', (req, res) => { res.send('Hello world!'); }); app.listen(3000, () => { console.log('Server started on port 3000'); });
http-proxy-middleware est un middleware qui peut nous aider à créer un proxy. Vous pouvez définir l'adresse cible du proxy pour transférer la demande vers un autre nom de domaine afin d'éviter les restrictions sur les demandes inter-domaines. L'exemple de code est le suivant :
const express = require('express'); const { createProxyMiddleware } = require('http-proxy-middleware'); const app = express(); const apiProxy = createProxyMiddleware('/api', { target: 'http://api.example.com', changeOrigin: true, pathRewrite: { '^/api': '' } }); app.use('/api', apiProxy); app.listen(3000, () => { console.log('Server started on port 3000'); });
Lors du traitement des requêtes inter-domaines, vous pouvez également définir des en-têtes de réponse pour résoudre les problèmes inter-domaines. En définissant l'en-tête Access-Control-Allow-Origin, indiquez au navigateur quels noms de domaine sont autorisés aux requêtes inter-domaines. L'exemple de code est le suivant :
const express = require('express'); const app = express(); app.use((req, res, next) => { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); }); app.get('/', (req, res) => { res.send('Hello world!'); }); app.listen(3000, () => { console.log('Server started on port 3000'); });
Résumé
Le problème inter-domaines est l'un des problèmes courants côté serveur, et c'est également un problème auquel les développeurs doivent faire face. Dans Node.js, vous pouvez résoudre les requêtes inter-domaines en définissant des en-têtes de réponse, en utilisant le middleware http-proxy-middleware et les modules cors pour assurer le fonctionnement normal du serveur. Dans le même temps, afin de garantir la sécurité du serveur, nous devons également suivre les règles de politique de même origine et traiter les requêtes inter-domaines avec soin.
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!