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

访问-控制-允许-源通配符子域、端口和协议

/ 猿问

访问-控制-允许-源通配符子域、端口和协议

慕姐4208626 2019-10-13 12:08:29

访问-控制-允许-源通配符子域、端口和协议

我试图为所有子域、端口和协议启用CORS。

例如,我希望能够从http://sub.mywebsite.com:8080/https://www.mywebsite.com/*

通常,我希望启用来自源匹配的请求(并且仅限于):

//*.mywebsite.com:*/*


查看完整描述

3 回答

?
MMMHUHU

Access-Control-Allow-Origin动态地设置为当前特定协议+域+端口),而不使用任何重写规则:

SetEnvIf Origin ^(https?://.+\.mywebsite\.com(?::\d{1,5})?)$   CORS_ALLOW_ORIGIN=$1
Header append Access-Control-Allow-Origin  %{CORS_ALLOW_ORIGIN}e   env=CORS_ALLOW_ORIGIN
Header merge  Vary "Origin"

仅此而已。

那些想在父域(例如mywebsite.com)上启用CORS的人,除了它的所有子域之外,还可以简单地用这一行替换第一行中的正则表达式:

^(https?://(?:.+\.)?mywebsite\.com(?::\d{1,5})?)$.

注:为规格符合性和正确的缓存行为,始终添加Vary: Origin启用cors的资源的响应头,甚至对于非cors请求和来自不允许来源的请求(请参见为什么).



查看完整回答
反对 回复 2019-10-14
?
慕用2447696

CORS规范是什么都没有。它只支持*null或者确切的协议+域+端口:http:/www.w3.org/tr/cors/#访问-控制-允许-原产地-响应-标头

您的服务器将需要使用regex验证源标头,然后可以在访问控制-允许-原产地响应头中回显原始值。



查看完整回答
反对 回复 2019-10-14
?
慕雪6173905

我对这个问题做了一些尝试,并提出了一个可重用的.htaccess(或httpd.conf)解决方案,该解决方案适用于Apache:

<IfModule mod_rewrite.c>
<IfModule mod_headers.c>
    # Define the root domain that is allowed
    SetEnvIf Origin .+ ACCESS_CONTROL_ROOT=yourdomain.com

    # Check that the Origin: matches the defined root domain and capture it in
    # an environment var if it does
    RewriteEngine On
    RewriteCond %{ENV:ACCESS_CONTROL_ROOT} !=""
    RewriteCond %{ENV:ACCESS_CONTROL_ORIGIN} =""
    RewriteCond %{ENV:ACCESS_CONTROL_ROOT}&%{HTTP:Origin} ^([^&]+)&(https?://(?:.+?\.)?\1(?::\d{1,5})?)$
    RewriteRule .* - [E=ACCESS_CONTROL_ORIGIN:%2]

    # Set the response header to the captured value if there was a match
    Header set Access-Control-Allow-Origin %{ACCESS_CONTROL_ORIGIN}e env=ACCESS_CONTROL_ORIGIN
</IfModule>
</IfModule>

只需设置ACCESS_CONTROL_ROOT变量位于块顶部的变量到根域,它将响应Origin:中的客户端请求标头值。Access-Control-Allow-Origin:如果与您的域匹配,则响应标头值。

还请注意,您可以使用sub.mydomain.com就像ACCESS_CONTROL_ROOT它将把起源限制在sub.mydomain.com*.sub.mydomain.com(也就是说,它不必是域根)。允许更改的元素(协议、端口)可以通过修改regex的URI匹配部分来控制。



查看完整回答
反对 回复 2019-10-14

添加回答

回复

举报

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