J'ai lu quelque chose à propos de Access-Control-Allow-Origin
car cela semble efficace pour autoriser les requêtes entre domaines puisque j'ai accès au site externe. Ma question est comment utiliser Access-Control-Allow-Origin
pour autoriser les requêtes entre domaines. J'ai essayé ceci (ne rigole pas) (au fait, tout ce que je veux, c'est qu'un seul numéro, 1 ou 0, soit retourné)
<html>
<head>
Access-Control-Allow-Origin: *
</head>
<body>
1
</body>
</html>
Est-ce que je suis proche? Merci de votre aide. S'il y a un moyen plus facile de faire une simple requête inter-domaines, faites le moi savoir.
C'est un en-tête HTTP. Vous devez configurer votre serveur Web ou votre application Web pour envoyer cet en-tête de manière idéale. Peut-être en htaccess ou en PHP.
Sinon, vous pourrez peut-être utiliser
<head>...<meta http-equiv="Access-Control-Allow-Origin" content="*">...</head>
Je ne sais pas si cela fonctionnerait. Tous les en-têtes HTTP ne peuvent pas être configurés directement dans le code HTML. </ Strike>
Cela fonctionne comme une alternative à plusieurs en-têtes HTTP, mais voyez le commentaire de @EricLaw ci-dessous. Cet en-tête particulier est différent.
Caveat
Cette réponse concerne uniquement la définition des en-têtes. Je ne sais rien sur le fait d'autoriser les requêtes entre domaines.
À propos des en-têtes HTTP
Chaque demande et réponse a des en-têtes. Le navigateur envoie ceci au serveur web
GET /index.htm HTTP/1.1
Puis les en-têtes
Host: www.example.com
User-Agent: (Browser/OS name and version information)
.. Additional headers indicating supported compression types and content types and other info
Puis le serveur envoie une réponse
Content-type: text/html
Content-length: (number of bytes in file (optional))
Date: (server clock)
Server: (Webserver name and version information)
Des en-têtes supplémentaires peuvent être configurés, par exemple Cache-Control
. Tout dépend de votre langue (PHP, CGI, Java, htaccess) et du serveur Web (Apache, etc.).
Il existe 3 façons d'autoriser l'origine entre domaines (à l'exception de jsonp
):
1) Définissez l'en-tête de la page directement à l'aide d'un langage de modélisation tel que PHP. N'oubliez pas qu'il ne peut y avoir de code HTML avant votre en-tête, sinon il échouera.
<?php header("Access-Control-Allow-Origin: http://example.com"); ?>
2) Modifiez le fichier de configuration du serveur (Apache.conf
) et ajoutez cette ligne. Notez que "*"
représente tout autoriser. Certains systèmes peuvent également avoir besoin du jeu d'informations d'identification. En général, tout accès est un risque pour la sécurité et doit être évité:
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Credentials true
3) Pour autoriser plusieurs domaines sur les serveurs Web Apache, ajoutez les éléments suivants à votre fichier de configuration.
<IfModule mod_headers.c>
SetEnvIf Origin "http(s)?://(www\.)?(example.org|example.com)$" AccessControlAllowOrigin=$0$1
Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
Header set Access-Control-Allow-Credentials true
</IfModule>
4) Pour le développement, utilisez uniquement votre navigateur et autorisez CORS sans limite en utilisant l'extension Chrome Allow-Control-Allow-Origin
<?php header("Access-Control-Allow-Origin: http://example.com"); ?>
Cette commande désactive uniquement les premières informations d’avertissement de la console.
Résultat: résultat de la console