php - 网页抓取字体访问问题

标签 php .htaccess fonts web-scraping

我正在为我们客户的一个网站进行网页抓取。一切正常。但我遇到一个问题,字体不起作用。我在 Chrome 控制台中收到以下错误:

Access to Font at 'https://www.example.com/fonts/fontawesome-webfont.woff?v=4.2.0' from origin 'http://www.mydomain' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.mydomain' is therefore not allowed access.

enter image description here

我尝试将以下代码放入 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 headers 模块也已启用

enter image description here

最佳答案

允许从服务器 www.mydomain 服务器 www.example.com< 上的网站访问服务器 www.example.com 上的字体 需要允许来自 www.mydomain 的请求。对于服务器 www.example.com 上的 HTTP 请求 (get) 响应,响应必须(至少)包含以下 header :

Access-Control-Allow-Origin: http://www.mydomain

如果您无法控制以这种方式配置服务器www.example.com,您还需要下载资源并将其与抓取的内容放在一起并更改指向它的链接。有关使用 PHP 进行 HTML 处理的介绍,请参阅问答引用资源 "How do you parse and process HTML/XML in PHP?"。还有现成的用于抓取的 PHP 库可以为您的任务提供支持。

关于php - 网页抓取字体访问问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44513599/

相关文章:

apache - Ubuntu 14.4.01 子域上的 Symfony2 - 缺少 Assets

.htaccess - 显示 https 状态的域 "Masking"

javascript - 是否可以将自定义字体嵌入到您的站点/将其安装在您的主机上?

PHP - fopen($url) 无法打开流 : Permission denied in

PHP:获取关联数组的第 n 个项目

php - 识别选中的复选框序列然后保存到 mysql 数据库

.htaccess - 如何使用 .htaccess 从 URL 隐藏文件夹名称

html - 输入提交按钮中的 Font Awesome 图标和文本?

Cocoa:从网上下载的字体

javascript - jQuery - Ajax 在 GET 中提交 JSON 数据