web-dev-qa-db-fra.com

Comment utiliser Access-Control-Allow-Origin? Est-ce qu'il va juste entre les balises de tête html?

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.

21
davis

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.).

10
George Bailey

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

16
mbokil
<?php header("Access-Control-Allow-Origin: http://example.com"); ?>

Cette commande désactive uniquement les premières informations d’avertissement de la console.

console

Résultat: résultat de la console

0
Jakub Ujvvary