我有一些指向类似图片的网址:
如果在这样的终端命令行中使用curl,则会得到图像:
/usr/bin/curl -o 1234.jpg 'the_url_to_image'
我需要在带有选项的php代码中使用cURL。我尝试了几个参数来获取图像,并始终出现403错误
禁止访问指定的资源。 Apache Tomcat
我的参数(只有cURL参数,用于将图像写入文件的代码不在这里:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $img_url);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, false);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie_filename);
curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie_filename);
$page_content = curl_exec($ch);
curl_close($ch);
编辑
如果我将图像网址提供给在线卷曲页面,例如
onlinecurl.com
我获得了图像二进制文件,而不是错误消息。
因此可以使用curl保存图像,我只需要正确设置curl_setopt
设置即可。
您可以尝试添加
curl_setopt($ch, CURLOPT_POST, 0);
如果这不起作用,则必须添加Apache Tomcat在您的web.xml中:
<login-config>
<auth-method>BASIC</auth-method>
</login-config>