为了账号安全,请及时绑定邮箱和手机立即绑定

访问-控制-允许-起源多源域?

/ 猿问

访问-控制-允许-起源多源域?

PIPIONE 2019-06-01 14:15:19

访问-控制-允许-起源多源域?

是否有一种方法允许多个跨域使用Access-Control-Allow-Origin头球?

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

举个例子,如下所示:

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

我尝试过上述代码,但在Firefox中似乎不起作用。

是否可以指定多个域,或者我是否只能使用一个域?


查看完整描述

4 回答

?
当年话下

听起来,这样做的建议方法是让服务器从客户端读取OriginHeader,将其与您希望允许的域列表进行比较,如果匹配,则回显Origin返回到客户端的标头作为Access-Control-Allow-Origin响应中的标题。

带着.htaccess你可以这样做:

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


查看完整回答
反对 回复 2019-06-01
?
慕莱坞森

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

$http_origin = $_SERVER['HTTP_ORIGIN'];

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


查看完整回答
反对 回复 2019-06-01
?
慕村225694

这对我有用:

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

放进去时.htaccess它肯定会起作用的。


查看完整回答
反对 回复 2019-06-01
?
精慕HU

我对Woff字体也有同样的问题,多个子域必须有访问权限。为了允许子域,我在httpd.conf中添加了类似的内容:

SetEnvIf Origin "^(.*\.example\.com)$" ORIGIN_SUB_DOMAIN=$1
<FilesMatch "\.woff$">
    Header set Access-Control-Allow-Origin "%{ORIGIN_SUB_DOMAIN}e" env=ORIGIN_SUB_DOMAIN
</FilesMatch>

对于多个域,只需在SetEnvIf.


查看完整回答
反对 回复 2019-06-01

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信