一周前,我遇到了一个CORS错误:
Access to XMLHttpRequest at [domainA/example/directory/file.xml] from origin [domainB] has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我通过编辑.htaccess解决了这个问题,添加了:
<IfModule mod_headers.c>
<FilesMatch ".+">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
</IfModule>
成功了!然而,我现在在同一域、不同路径(即"domainA/different/example/directory/file.json"(请求数据时遇到了同样的问题。
我不应该根据对.htaccess的编辑请求任何目录中的任何文件吗?(位于"/…/…/www/[domainA root]/.htaccess"(
值得注意的是,在我的第一个示例中,[domainA/example/directory/file.xml]是Drupal创建的xml视图,而不是实际目录中的静态文件。
这看起来像是一种典型的情况,在这种情况下,浏览器正在缓存先前OPTIONS请求对先前请求的特定URL的响应,标头以前不在那里,浏览器在TTL到期之前不会再检查。
我想说:检查一下,头是否在那里,从你的命令行(即(发出一个冗长的curl请求
curl -v https://yourhost/yourURL
然后你可以从那里拿走
而不是尝试。+在filematch中,您应该尝试:
<FilesMatch ".(htm|html|css|js|php|json)$">
AddDefaultCharset UTF-8
DefaultLanguage en-US
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "*"
</FilesMatch>