【问题标题】:file_get_contents fails to open stream but curl gives 401 errorfile_get_contents 无法打开流但 curl 给出 401 错误
【发布时间】: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


【解决方案1】:

我发现了这个问题。该站点受密码保护,您需要将其他参数传递给 file_get_contents 才能以这种方式访问​​它。不是我以前遇到过的事情。

【讨论】:

  • 这似乎是一个合理的原因
猜你喜欢
  • 2017-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-24
相关资源
最近更新 更多