CORS NGINX

CORS NGINX

«Le partage de ressources croisées est connu de l'acronyme CORS. Lorsque quelqu'un fonctionne sur un domaine différent, le serveur utilisera cette méthode pour contrôler l'accès à ses services. Cela se produit au milieu d'un serveur et d'un navigateur. À l'aide des en-têtes HTTP Access-Control-Request- *, le navigateur transmet certaines données. Sur la base des en-têtes reçus, le serveur décide quoi renvoyer en tant qu'en-têtes d'accès à allow- *. Le navigateur est désormais conscient de sa capacité ou de son incapacité à accéder aux ressources du serveur. Le navigateur peut parfois effectuer un pré-vol, qui est une validation, avant de faire la demande réelle. Les en-têtes ne peuvent pas être modifiés par code frontal dans le navigateur. Les en-têtes peuvent être modifiés par le code côté serveur. Cependant, il doit être effectué par un service en aval que l'application ne peut pas voir, comme une passerelle API ou le serveur HTTP.

Les requêtes HTTP d'origine transversale réalisées par les scripts sont limitées par les navigateurs pour des problèmes de sécurité. Le principe d'origine homose. Cela implique qu'une application Web utilisant ces API ne peut faire que des demandes de ressources à partir de l'origine à partir de laquelle elle a été chargée à moins que la réponse des autres sources ait les en-têtes CORS appropriés."

Déclencheurs et types de demande de CORS

Étant donné que les ressources sont fréquemment hébergées dans la même source que l'application Web, toutes les demandes ne se traduisent pas par une demande CORS. CORS est activé s'il est différent. Les demandes simples et les demandes pré-volées COR sont deux formes différentes de demandes COR.

Cors de demande simple

Lorsqu'un utilisateur initie une demande simple, son navigateur Web transmet la demande au serveur. Le serveur examine ensuite la source de la demande, l'analyse à ses règles et fournit la ressource demandée s'il correspond. Ce type de demande utilise les en-têtes d'origine et d'accès à l'origine à l'allow pour décider si la ressource doit être fournie. Les seuls types de demande qui se traduiront par une demande simple sont Get, Head et Post, ainsi que les en-têtes comme Accept-Language, DPR, Link, Save-Data, Content-Type, Content-Language, visionport-width et Largeur. Même, tous les types de contenu ne se traduisent pas par une demande simple. Ici, seules certaines formes de codage de forme provoquent une demande simple.

CORS préfilés

Les demandes pré-volées sont quelque peu différentes car il n'y a pas de connexion instantanée aux services dans le tour initial. Une demande préfilée est lancée lorsque les conditions sont modifiées d'une manière ou d'une autre, par exemple, en utilisant un en-tête de demande modifié ou un type de contenu alternatif. Dans les demandes pré-volées, le moteur de recherche confirme d'abord qu'il peut accéder à la ressource en correspondant au navigateur Web, et lorsque le navigateur Web répond avec une réponse correcte (HTTP 200), il envoie ensuite une autre demande pour acquérir la ressource. Tout d'abord, il fait une demande en utilisant la méthode des options HTTP, puis il télécharge des ressources à l'aide de types de demande similaires aux méthodes Get and Publier.

Condition préalable à CORS dans nginx

En premier lieu, les réponses 4xx sont incompatibles avec la directive de l'en-tête d'ajout de Nginx. La directive d'en-têtes plus définie, qui fonctionne également avec des réponses 4xx, peut être utilisée pour y ajouter des en-têtes personnalisés, mais pour ce faire, nous devons d'abord installer le module d'en-têtes Nginx.

Le package Nginx-Extras peut être facilement installé si vous utilisez une distribution Debian, malgré la recommandation de la documentation que vous créez Nginx à partir de la source à l'aide du module:

Importance d'activer les COR sur Nginx

JavaScript exécutant sur le navigateur du client n'a généralement pas besoin d'accéder aux services en dehors de son domaine. En conséquence, la désactivation des COR peut être une sage précaution de sécurité.

Cependant, pour que ces fonctionnalités fonctionnent sur le backend, CORS doit être activé. En effet. Un protocole, un nom de domaine ou un port distincts peut tous être appelés le même domaine.

Comment activer les COR sur Nginx dans Ubuntu 20.04

Allons à la partie principale. Ouvrez l'éditeur préféré, VIM, puis accédez à la configuration Nginx:

Entrez la prochaine entrée dans le bloc de serveur de votre configuration Nginx.

Redémarrez Nginx après cela, puis enregistrez le fichier de configuration.

CORS peut être activé en utilisant la commande curl pour vérifier. La sortie suivante doit en résulter:

Comment gérer les erreurs COR dans un Severs

Le côté serveur est l'endroit où CORS est implémenté; Le côté client ne peut pas changer son fonctionnement. Les utilisateurs peuvent être empêchés d'utiliser des ressources partagées en utilisant le comportement CORS, souvent connu sous le nom d'erreur CORS. Ce n'est pas une erreur mais plutôt un mécanisme de sécurité pour vous protéger ou le site Web que vous visitez d'une violation potentielle de sécurité. La mise en œuvre côté client des en-têtes HTTP qui sont inadéquates ou incorrectes peuvent entraîner ce problème (E.g., Clés API manquantes et autres informations d'autorisation). Nous avons des solutions uniques à ces erreurs.

  • Les demandes d'origine transversale peuvent être faites à l'aide d'un proxy CORS. Votre demande est transmise via la couche proxy, qui est aveugle à son origine. Par conséquent, même si la demande provient d'une origine non identifiée, le proxy CORS le rend comme s'il provenait d'un emplacement autorisé.
  • L'utilisation d'une fonction sans serveur est un remède plus populaire. C'est une approche différente pour proxir vos demandes, mais malgré l'approche décrite ci-dessus, vous pouvez créer votre micro-infrastructure pour accéder à un service Web et transmettre des données à un point de terminaison API.

Conclusion

L'objectif principal de CORS est de rendre les applications en ligne plus sécurisées pour entraver les attaques de l'homme au milieu. CORS peut encore être avantageux aussi. Puisqu'il n'est pas activé par défaut, CORS doit être activé dans cette situation. Avec l'utilisation des directives d'origine et d'accès-contrôle-allow-original, qui sont les seuls types de demandes utilisées par le type de demande de base CORS, Nginx peut fournir le navigateur Web l'autorisation d'accès à la ressource demandée en fonction de l'origine. CORS est un excellent outil qui devrait être utilisé avec soin dans les deux cas.