Maison > Article > Opération et maintenance > Erreur de demande inter-domaines de configuration Nginx Access-Control-Allow-Origin * Comment résoudre
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 : #🎜🎜 ##🎜 🎜#
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; } }#🎜🎜 #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.
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 :multipart/form-dataapplication/x-www-form-urlencoded
text/plain # 🎜🎜#
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.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 ... 省略了一些
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 :
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!