问题描述
我需要允许来自以下域的Access-Control-Allow-Origin:
http://localhost:8080
app://MyApp
这是我为上述两个域都需要设置的当前.htaccess
条件:
Header Set Access-Control-Allow-Origin "http://localhost:8080"
Header always set Access-Control-Allow-Methods "POST,GET,OPTIONS,DELETE,PUT"
Header set Access-Control-Allow-Headers "Origin,X-Requested-With,Content-Type,Authorization,Accept"
Header Set Access-Control-Expose-Headers "Content-disposition"
我已经在SO中读了很多solutions,上面写着说让服务器从客户端读取Origin报头,将其与域列表进行比较,然后在匹配时添加值。但是,我仍然无法弄清楚如何设置.htaccess
文件,使其包括:
-
2个使用不同方案的不同域
-
还包括
Access-Control-Allow-Methods
,Access-Control-Allow-Headers
和Access-Control-Expose-Headers
。 -
除非这是唯一的选择,否则我不想使用
*
。
有人可以帮我重写以上.htaccess
的条件,以包括2个域。
解决方法
这是我添加具有不同方案的多个域以及对源进行检查的方法,以根据请求源将Access-Control-Allow-Origin
和其他标头发送回去。我不想直接编辑LiteSpeed配置文件。我的.htaccess
中的以下规则似乎有效:
<IfModule mod_headers.c>
SetEnvIf Origin "(http(s)?://localhost:8080)|(app://MyApp)|(app://myapp)$" AccessControlAllowOrigin=$0
Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
Header add Access-Control-Allow-Methods "POST,GET,OPTIONS,DELETE,PUT"
Header add Access-Control-Allow-Headers "Origin,X-Requested-With,Content-Type,Authorization,Accept"
Header add Access-Control-Expose-Headers "Content-Disposition"
Header merge Vary Origin
</IfModule>