NGINX "Access-Control-Allow-Origin' en-tête contient plusieurs valeurs
J'ai un serveur NGINX avec PHP (supposons un nom d'hôte de http://myserver.com). J'ai un script PHP que je suis de l'accès via XHR partir d'une page web sur mon localhost. Je l'utilise comme un GeoIP serveur similaire à freegeoip.net.
Je suis en train de verrouiller XHR à des domaines spécifiques.
Voici ma config configuration:
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param GEOIP_COUNTRY_CODE $geoip2_data_country_code;
fastcgi_param GEOIP_COUNTRY_NAME $geoip2_data_country_name;
fastcgi_param GEOIP_COUNTRY_GEONAME_ID $geoip2_data_country_geoname_id;
fastcgi_param GEOIP_CITY_NAME $geoip2_data_city_name;
fastcgi_param GEOIP_CITY_GEONAME_ID $geoip2_data_city_geoname_id;
fastcgi_param GEOIP_CONTINENT_CODE $geoip2_data_city_continent_code;
fastcgi_param GEOIP_CONTINENT_GEONAME_ID $geoip2_data_city_continent_geoname_id;
fastcgi_param GEOIP_LATITUDE $geoip2_data_city_location_latitude;
fastcgi_param GEOIP_LONGITUDE $geoip2_data_city_location_longitude;
fastcgi_param GEOIP_TIME_ZONE $geoip2_data_city_location_timezone;
fastcgi_param GEOIP_ISP $geoip2_data_city_traits_isp;
fastcgi_param GEOIP_IP_ADDRESS $geoip2_data_city_traits_ip_address;
set $cors "";
if ($http_origin ~* 'https?://(www\.domain1\.com|www\.domain2\.com)')
{
set $cors "true";
}
if ($cors = 'true')
{
add_header 'Access-Control-Allow-Origin' "$http_origin";
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,Pragma,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With';
}
if ($request_method = 'OPTIONS')
{
return 204;
}
}
La question que je vais avoir, c'est que lorsque j'exécute la requête XHR, j'obtiens l'erreur suivante:
XMLHttpRequest cannot load http://myserver.com/. The 'Access-Control-Allow-Origin' header contains multiple values '*, http://localhost', but only one is allowed. Origin 'http://localhost' is therefore not allowed access.
Je n'ai qu'un appel à add_header 'Access-Control-Allow-Origin' "$http_origin";
dans le fichier de config, alors pourquoi dois-je avoir plusieurs valeurs? Est il possible que je peux désactiver le premier appel, c'est à dire *
?
Vous devez vous connecter pour publier un commentaire.
1.) L'application dynamiquement les approuver et de les ajouter à l'en-tête de réponse.
2.) Ou installer le OpenResty version de Nginx avec Lua activé et faire la même chose, mais avec Lua dans le fichier conf de Nginx.
Donc l'erreur que j'ai faite est que j'ai eu la suivante dans mon fichier PHP:
J'avais mis en place plus tôt et juste oublié de le sortir.
Tout fonctionne très bien maintenant.