NGINX' Access-Control-Allow-Origin'标头包含多个值

时间:2016-08-15 21:14:53

标签: php ajax nginx

我有一个带PHP的NGINX服务器(让我们假设主机名为http://myserver.com)。我有一个PHP脚本,我可以从我的localhost上的网页通过XHR访问。我将它用作类似于freegeoip.net的GeoIP服务器。

我试图将XHR锁定到特定域。

这是我的配置设置:

var cntrs = db.CountrysTBLs.ToList();
List<Medals> objs = call_Service_Of_Medals_Without_ISOCode();

IEnumerable<Medals> query = from obj in objs
join cntry in cntrs on obj.country_name equals '%' + cntry.CommonName + '%'
select new Medals 
{ 
    ArabicName = cntry.ArabicName, 
    ISOCode = cntry.ISOCode, 
    country_name = obj.country_name, 
    place = obj.place, 
    gold_count = obj.gold_count, 
    silver_count = obj.silver_count, 
    bronze_count = obj.bronze_count, 
    total_count = obj.total_count 
};

我遇到的问题是,当我执行XHR请求时,出现以下错误:

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; } }

我在配置文件中只有一次调用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.,为什么我有多个值?有没有办法可以禁用第一个电话,即add_header 'Access-Control-Allow-Origin' "$http_origin";

0 个答案:

没有答案