【问题标题】:CORS Access-Control-Allow-Origin Error on Drupal 7 with Cloudflare带有 Cloudflare 的 Drupal 7 上的 CORS Access-Control-Allow-Origin 错误
【发布时间】:2016-01-11 05:49:30
【问题描述】:
我们一直遇到格式错误的问题。
来自“https://example.com”的字体已被阻止加载
跨域资源共享策略:没有“Access-Control-Allow-Origin”
请求的资源上存在标头。起源
'https://www.example.com' 因此不允许访问。
我们还收到“在原点重定向”错误。
我们正在使用 Drupal 7 和 Cloudflare。
我们已尝试编辑 .htaccess 以包含
Header set Access-Control-Allow-Origin "https://example.com"
Header set Access-Control-Allow-Origin "https://www.example.com"
尝试了很多;
- 已清除 cloudflare
- 重启 apache
- 尝试了通配符“*”
- Drupal CORS 模块
到目前为止还没有快乐。
由于这种方法不起作用,我想知道是否遗漏了什么或者是否有其他方法,例如为什么我们通过 Drupal 获取原始“https://example.com”而不是“https://www.example.com” '。
最后请注意,当我查看一些资源时,我看到了两种不同的模式。
如果资源在请求标头中的状态为“301 Moved Permanently”,则有
状态为“304 未修改”
奇怪的是根本没有www; htaccess 应该被重定向并且它在 base_url 中不存在。
【问题讨论】:
标签:
apache
.htaccess
drupal-7
cors
cloudflare
【解决方案1】:
我遇到了一个非常相似的问题。
确保已启用模块标头
1 - 要在 Apache2 (httpd) 上启用 mod 标头,您需要运行以下命令:
sudo a2enmod 标头
然后重启Apache
sudo service apache2 重启
2 - 要允许对所有文件的特定源域进行 Access-Control-Allow-Origin (CORS) 授权,请将其添加到您的 .htaccess 中
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin https://example.org
Header set Access-Control-Allow-Origin https://example.com
Header set Access-Control-Allow-Origin https://example.eu
## SECURITY WARNING : never add following line when site is in production
## Header set Access-Control-Allow-Origin "*"
</IfModule>
2 - 在我们的示例中,要允许特定源域的 Access-Control-Allow-Origin (CORS) 授权和仅字体,请在 .htaccess 中的以下部分中使用 FilesMatch p>
<FilesMatch "\.(ttf|otf|eot|woff|woff2)$">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin https://example.org
Header set Access-Control-Allow-Origin https://example.com
Header set Access-Control-Allow-Origin https://example.eu
</IfModule>
</FilesMatch>
在 .htaccess 文件中进行更改后,无需重新启动您的 apache 网络服务器