【问题标题】:Access-Control-Allow-Origin doesn't work if wrapped inside FilesMatch如果包裹在 FilesMatch 中,Access-Control-Allow-Origin 将不起作用
【发布时间】:2015-09-17 12:19:37
【问题描述】:
    <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),那么它可以工作,我可以提出我的请求。如果我通过将 Deny from all 放入其中来测试我的 FilesMatch,那么它显然也可以正常工作。但是将它们放在一起,我无法提出请求。它似乎正常运行,但没有凭据并抛出 Access-Control-Allow-Origin 警告。

【问题讨论】:

  • 使用相同的代码stackoverflow.com/questions/20673882/…引用此帖子并附上成功消息
  • @ZigmaEmpire 我没有设置 Access-Control-Allow-Origin 的问题,我不能和 FilesMatch 一起做,它只是不起作用。

标签: regex cors access-control


【解决方案1】:

尝试将您的 \. 放在括号内

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

尝试将您的表达式括为字符串,例如 "%{AccessControlAllowOrigin}e"

<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
猜你喜欢
  • 2011-09-13
  • 2021-01-01
  • 2017-08-29
  • 2021-09-16
  • 1970-01-01
  • 2015-05-02
  • 2013-10-27
  • 2015-06-17
  • 2014-03-04
相关资源
最近更新 更多