如果包含在FilesMatch中,Access-Control-Allow-Origin不起作用

时间:2015-06-30 15:42:31

标签: regex cors access-control

    <FilesMatch "\.(json|txt)$" >
       SetEnvIf Origin "http(s)?://(www\.)?(sub.domain.com|sub2.domain.com|www.domain2.com)$" AccessControlAllowOrigin=$0$1
       Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
       Header set Access-Control-Allow-Credentials true
       Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept"
    </FilesMatch>

如果我在它上面使用中间块(没有FilesMatch)那么它可以工作,我可以提出我的请求。如果我通过将拒绝来自其中的所有来测试我的FilesMatch,那么它显然也能正常工作。但把它们放在一起,我无法提出要求。它看起来很糟糕,但没有凭据并抛出 Access-Control-Allow-Origin 警告。

1 个答案:

答案 0 :(得分:1)

尝试将 \。放在括号

<FilesMatch "(?<!\.json|\.txt)$">

尝试将表达式括在字符串中,例如&#34;%{AccessControlAllowOrigin} e&#34;

<FilesMatch "(?<!\.json|\.txt)$" >
       SetEnvIf Origin "http(s)?://(www\.)?(sub.domain.com|sub2.domain.com|www.domain2.com)$" AccessControlAllowOrigin=$0$1
       Header add Access-Control-Allow-Origin "%{AccessControlAllowOrigin}e" env=AccessControlAllowOrigin
       Header set Access-Control-Allow-Credentials true
       Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept"
</FilesMatch>