HTTP

有没有办法使用Access-Control-Allow-Origin头允许多个跨域?

我知道*,但它太开放了。 我真的想只允许几个域名。

举个例子,像这样:

Access-Control-Allow-Origin: http://domain1.com, http://domain2.com

我已经尝试了上面的代码,但它似乎并没有在Firefox中工作。

是否可以指定多个域名,还是只能使用一个域名?


听起来像推荐的方法是让你的服务器从客户端读取Origin标头,将它与你想要允许的域列表进行比较,如果匹配,则将Origin标头的值回显到客户端作为响应中的Access-Control-Allow-Origin标头。

使用.htaccess你可以这样做:

# ----------------------------------------------------------------------
# Allow loading of external fonts
# ----------------------------------------------------------------------
<FilesMatch ".(ttf|otf|eot|woff)$">
    <IfModule mod_headers.c>
        SetEnvIf Origin "http(s)?://(www.)?(google.com|staging.google.com|development.google.com|otherdomain.net|dev02.otherdomain.net)$" AccessControlAllowOrigin=$0
        Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
    </IfModule>
</FilesMatch>

我在PHP中使用的另一个解决方案:

$http_origin = $_SERVER['HTTP_ORIGIN'];

if ($http_origin == "http://www.domain1.com" || $http_origin == "http://www.domain2.com" || $http_origin == "http://www.domain3.info")
{  
    header("Access-Control-Allow-Origin: $http_origin");
}

这对我有效:

SetEnvIf Origin "^http(s)?://(.+.)?(domain.org|domain2.com)$" origin_is=$0 
Header always set Access-Control-Allow-Origin %{origin_is}e env=origin_is

输入.htaccess

它肯定会工作。

干杯!!

链接地址: http://www.djcxy.com/p/47553.html

上一篇: http

下一篇: domain POST request via JavaScript?