【发布时间】:2015-09-16 14:31:07
【问题描述】:
我正在尝试使用 file_get_contents 抓取和 svg 并将其放在页面上。在客户端服务器上,它给出错误“无法打开流”。我发现解决此问题的一些建议是使用 curl,但是当我这样做时,我收到了错误 401 未经授权的访问。
我可以做些什么来修复这两种方法之一?
function curl_get_contents($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
echo curl_get_contents('http://example.com/path/to/logo.svg');
【问题讨论】:
-
他们可能会阻止脚本访问。查找使 curl 伪装成 Internet Explorer 的示例。如果这不起作用,则可能是他们要求引用者是他们的页面之一(不允许窃取)。同样,您可以根据需要使用 curl 来伪造引荐来源网址。
-
你的代码在哪里?这两个错误都可能导致正在访问的无效路径。
-
您尝试访问的资源是公开的吗?可能是这个原因吗?
-
SVG 存储在同一台服务器上,如果我在浏览器中转到 SVG 的 URL,我就可以正常访问它。我将在几秒钟内添加我的 curl 代码。
-
尝试添加:
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0");
标签: php curl svg file-get-contents