我正在为我们客户的某个网站进行网页报废。一切正常。但我得到一个问题,字体不起作用。我在chrome控制台中遇到以下错误:
访问字体 ' https://www.example.com/fonts/fontawesome-webfont.woff?v=4.2.0'从 起源' http://www.mydomain'被CORS政策阻止:没有 '访问控制允许来源'标题出现在请求的上 资源。起源' http://www.mydomain'因此是不允许的 访问。
我尝试将以下代码放在http://www.mydomain .htaccess文件中,但没有运气
的.htaccess
<IfModule mod_headers.c>
<FilesMatch "\.(ttf|ttc|otf|eot|woff|font.css|css)$">
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers "Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With"
Header set Access-Control-Allow-Methods "GET, PUT, POST"
</FilesMatch>
</IfModule>
注意:我无法进行任何更改https://www.example.com
,并且我的浏览器缓存也被禁用。
网页报废的PHP代码:
$cookie = 'cookies.txt';
$timeout = 90;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 400);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout );
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_USERAGENT,
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($ch, CURLOPT_FILETIME, true);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);
echo $curl_scraped_page;
修改
apache标头模块也已启用
答案 0 :(得分:3)
要启用从服务器www.example.com
上的网站访问服务器www.mydomain
上的字体,服务器www.example.com
需要允许来自www.mydomain
的请求。对于HTTP请求(get)响应中服务器www.example.com
上的响应,响应必须包含(至少)以下标题:
Access-Control-Allow-Origin: http://www.mydomain
如果您无法以这种方式配置服务器www.example.com
,则还需要下载资源并将其与已删除的内容放在一起并更改链接。有关使用PHP进行HTML处理的介绍,请参阅Q&amp; A参考资源"How do you parse and process HTML/XML in PHP?"。还有现成的用于抓取的PHP库,可以为您的任务提供支持。
答案 1 :(得分:1)
这可能不适合你。
.htaccess
。您必须在正确的位置(通常为AllowOverride
)正确指定apache2.conf
指令(对于Apache)。对于后者,您可以重写脚本以根据请求协议加载资源。 e.g:
//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css
如果您有权访问example.com的源代码,这将允许浏览器根据请求使用http或https。如果不这样做,那么刮掉example.com的https版本比破解CORS配置要好得多。