小编典典

Access-Control-Allow-Origin 通配符子域、端口和协议

all

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

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

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

//*.mywebsite.com:*/*


阅读 105

收藏
2022-03-23

共1个答案

小编典典

基于 DaveRandom的回答,我也在玩,发现了一个稍微简单的 Apache
解决方案,它产生相同的结果(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
请求和来自不允许来源的请求(参见示例为什么)。

2022-03-23