Maison > Opération et maintenance > Nginx > le corps du texte

Erreur de demande inter-domaines de configuration Nginx Access-Control-Allow-Origin * Comment résoudre

WBOY
Libérer: 2023-05-11 23:10:12
avant
5681 Les gens l'ont consulté

Préface

Lorsqu'une erreur inter-domaines 403 se produit no 'access-control-allow-origin' header is present on the requested resource, vous devez configurer les paramètres d'en-tête de réponse pour le serveur nginx : #🎜🎜 ##🎜 🎜#

1. Solution


Il vous suffit de configurer les paramètres suivants dans le fichier de configuration nginx :

location / { 
 add_header access-control-allow-origin *;
 add_header access-control-allow-methods 'get, post, options';
 add_header access-control-allow-headers 'dnt,x-mx-reqtoken,keep-alive,user-agent,x-requested-with,if-modified-since,cache-control,content-type,authorization';

 if ($request_method = 'options') {
  return 204;
 }
}
Copier après la connexion
#🎜🎜 #Le code de configuration ci-dessus Le problème est résolu Si vous ne souhaitez pas étudier en profondeur, regardez simplement ici =-=


2. Explication

.

#🎜🎜 #
1. access-control-allow-origin

Le serveur n'est pas autorisé à traverser le domaine par défaut. Après avoir configuré « access-control-allow-origin * » pour le serveur nginx, cela signifie que le serveur peut accepter toutes les sources de requêtes (origine), c'est-à-dire qu'il accepte toutes les requêtes inter-domaines.

2. access-control-allow-headers permet d'éviter les erreurs suivantes :

#🎜 🎜#Le type de contenu du champ d'en-tête de requête n'est pas autorisé par les en-têtes de contrôle d'accès dans la réponse de contrôle en amont.

Cette erreur indique que la valeur du type de contenu de la requête actuelle n'est pas soutenu. En fait, cela a été causé par le lancement d'une requête de type "application/json". Cela implique un concept : la demande de contrôle en amont. Veuillez consulter l'introduction de la « demande de contrôle en amont » ci-dessous.

3. access-control-allow-methods consiste à éviter les erreurs suivantes :

content- le type n'est pas autorisé par les en-têtes access-control-allow-headers dans la réponse de contrôle en amont.

4 Ajoutez un retour 204 aux options pour gérer nginx lors de l'envoi d'une demande de publication. Accès toujours. erreur refusée

Lors de l'envoi d'une "demande de contrôle en amont", vous devez utiliser les options de méthode, le serveur doit donc autoriser cette méthode.
3. Demande de contrôle en amont

En fait, la configuration ci-dessus implique un standard w3c : cros, le nom complet C'est le partage de ressources d'origine croisée, qui a été proposé pour résoudre les requêtes inter-domaines.
La norme de partage de ressources d'origine croisée (cors) ajoute un nouvel ensemble de champs d'en-tête http qui permettent au serveur de déclarer quels sites d'origine ont l'autorisation d'accéder à quelles ressources. De plus, la spécification exige que pour les méthodes de requête http qui peuvent avoir des effets secondaires sur les données du serveur (en particulier les requêtes http autres que get ou les requêtes post avec certains types MIME), le navigateur doit d'abord utiliser la méthode options pour lancer une requête de contrôle en amont. (requête de contrôle en amont) pour savoir si le serveur autorise la requête inter-domaines. Une fois que le serveur a confirmé l'autorisation, il lance la requête http proprement dite. Lors du retour de la demande de contrôle en amont, le serveur peut également indiquer au client s'il doit disposer d'informations d'identification (y compris les cookies et les données liées à l'authentification http).

En fait, la requête avec le type de champ content-type application/json est la requête de publication mentionnée ci-dessus avec certains types MIME. Cors stipule que le type de contenu le fait. not Ceux appartenant aux types MIME suivants sont toutes des demandes de contrôle en amont :


application/x-www-form-urlencoded
multipart/form-data

text/plain # 🎜🎜#

Ainsi, la requête application/json ajoutera une requête "preflight" avant la communication formelle. Cette requête "preflight" apportera les informations d'en-tête access-control-request-. headers: content-type:

options /api/test http/1.1
origin: http://foo.example
access-control-request-method: post
access-control-request-headers: content-type
... 省略了一些
Copier après la connexion

Lorsque le serveur répond, si les informations d'en-tête renvoyées ne contiennent pas access-control-allow-headers: content-type, cela signifie que ceux qui ne sont pas ceux par défaut ne sont pas acceptés .type de contenu. Autrement dit, l'erreur suivante se produit :
le type de contenu du champ d'en-tête de requête n'est pas autorisé par les en-têtes d'autorisation de contrôle d'accès dans la réponse de contrôle en amont.

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!