/ / Nginx: Différence entre les restrictions CORS et des blocs de serveur spécifiques - nginx, cors, reverse-proxy

Nginx: Différence entre les restrictions CORS et des blocs de serveur spécifiques - nginx, cors, reverse-proxy

Je ne comprends pas très bien la différence entre la spécification de blocs de serveurs spécifiques (1) et la définition de restrictions sur CORS (2).

Si je souhaite limiter les appels d'API uniquement à domain1.com et domain2.com, pour lequel des deux devrais-je opter?

(1)

http {
index index.html;

server {
server_name www.domain1.com;
access_log logs/domain1.access.log main;

root /var/www/domain1.com/htdocs;
}
server {
server_name www.domain2.com;
access_log logs/domain2.access.log main;

root /var/www/domain2.com/htdocs;
}
}

(2)

set $cors "";
if ($http_origin ~ "^https?://(localhost|www.domain1.com|www.domain2.com)") {
set $cors "true";
}

if ($cors = "true") {
add_header "Access-Control-Allow-Origin" "$http_origin" always;
...

Réponses:

1 pour la réponse № 1

Je suis un débutant avec nginx, cependant, je pense pouvoir répondre à votre question: cela dépend de ce que vous essayez de faire.

(1) Les blocs serveur déterminent si / comment le WebLe serveur gère une requête en fonction du domaine demandé. Par exemple. si le client demande domain1.com, le serveur servira les ressources domain1.com; si le client demande domain2.com, le serveur servira les ressources domain2.com; etc.

(2) Le code CORS, tel que vous l’avez montré, détermineIndique si le serveur envoie ou non au navigateur un en-tête CORS ("Access-Control-Allow-Origin") dans la réponse (c'est-à-dire que l'en-tête indique au navigateur s'il doit ou non envoyer des demandes clients provenant du même domaine ou non). Ce sont des instructions pour que le navigateur client implémente les restrictions de demande CORS (à ce que je sache) - ce ne sont pas des restrictions CORS implémentées côté serveur.

Donc, si vous voulez avoir le navigateur Web du client"restreindre les appels api" alors (2) est votre meilleur choix, alors que si vous voulez juste des appels api pour un domaine spécifique d'utiliser un code spécifique, alors (1) est votre meilleur pari. Si, comme moi, vous souhaitez implémenter des restrictions CORS côté serveur, aucune de vos options ne le permet et vous devez implémenter une solution différente (mais ce que vous fournissez avec (2) peut s'avérer très utile s'il est utilisé pour déterminer si comment envoyer une réponse plutôt que d'envoyer un en-tête CORS au navigateur). HTH.