htaccess允许具有不同方案的多个域

问题描述

我需要允许来自以下域的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文件,使其包括

  1. 2个使用不同方案的不同域

  2. 包括Access-Control-Allow-MethodsAccess-Control-Allow-HeadersAccess-Control-Expose-Headers

  3. 除非这是唯一的选择,否则我不想使用*

有人可以帮我重写以上.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>