-1

我已经关注了https://developer.mozilla.org/en-US/docs/Learn/Server-side/Apache_Configuration_htaccess#cross-origin_images这些stackoverflow回答了Access-Control-Allow-Origin Multiple Origin Domains?

试着让它很好地工作。但它在某些来源和某些来源上产生了不匹配,它按预期工作。

htaccess 更新

<IfModule mod_rewrite.c>
<IfModule mod_setenvif.c>
    <IfModule mod_headers.c>
      # Allowing fonts for specific origins on mtn domains and local testing
      <FilesMatch "\.(ttf|otf|eot|woff|woff2)$">
        SetEnvIf Origin "^http(s)?://(.+\.)?(fiddle\.jshell\.net|lab4\.onlinecms\.mtn\.co\.za|mtndecoupled\.lndo\.site:444|localhost:4200)$" AccessControlAllowOrigin=$0
        Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
        Header set Access-Control-Allow-Credentials true
      </FilesMatch>
    </IfModule>
  </IfModule>
</IfModule>

CORS错误截图:

mtndecoupled.lndo.site:444 https://share.getcloudapp.com/geuA8QxY
lab4.onlinecms.mtn.co.za https://share.getcloudapp.com/Wnu0z94G
localhost:4200 https://share.getcloudapp.com /P8uGvzgx
jsfiddle https://jsfiddle.net/ft92z8c3/1

编辑

浏览器控制台中的错误消息:

CORS header 'Access-Control-Allow-Origin' does not match 'mtndecoupled.lndo.site:444'

不确定是模块检查还是设置环境正则表达式。我希望有人可以为此提供更多信息以及如何解决它。

感谢任何反馈。

4

1 回答 1

0

好的设法解决了这个问题。希望这可以帮助其他遇到此问题的人。

我们正在使用 Varnish 缓存并意识到它正在缓存第一个域命中。所以我们将 htaccess 更新为:

<IfModule mod_rewrite.c>
<IfModule mod_setenvif.c>
    <IfModule mod_headers.c>
      # Disable caching
      Header set Cache-Control "no-cache, no-store, must-revalidate"
      Header set Pragma "no-cache"
      Header set Expires 0
      # Allowing fonts for specific origins on mtn domains and local testing
      <FilesMatch "\.(ttf|otf|eot|woff|woff2)$">
        <IfModule mod_expires.c>
            ExpiresActive Off
        </IfModule>
        <IfModule mod_headers.c>
              FileETag None
              Header unset ETag
              Header unset Pragma
              Header unset Cache-Control
              Header unset Last-Modified
              Header set Pragma "no-cache"
              Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
              Header set Expires "Thu, 1 Jan 1970 00:00:00 GMT"
        SetEnvIf Origin "^http(s)?://(.+\.)?(fiddle\.jshell\.net|lab4\.onlinecms\.mtn\.co\.za|mtndecoupled\.lndo\.site:444|localhost:4200)$" AccessControlAllowOrigin=$0
        Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
        Header set Access-Control-Allow-Credentials true
        </IfModule>
      </FilesMatch>
    </IfModule>
  </IfModule>
</IfModule>
于 2021-08-05T07:14:19.557 回答