网页中的外部资源在线提供 403,但在本地工作。有没有办法解决?

Posted

技术标签:

【中文标题】网页中的外部资源在线提供 403,但在本地工作。有没有办法解决?【英文标题】:External ressource in webpage gives 403 online, but works in local. Is there a way to fix? 【发布时间】:2016-01-12 08:33:17 【问题描述】:

我正在尝试在我的网页中嵌入来自另一个网站的图像。图片链接在 http(不是 ssl)中。在本地启动页面时,图像显示正确,但是当我尝试将网页上线时,图像请求在我尝试的每个主机上都会出现 403 Forbidden 错误。

我很难理解它在本地而不是在线是如何工作的。 有没有办法绕过这个 403 错误?

【问题讨论】:

【参考方案1】:

服务器可能会阻止您将该图像嵌入您的网站。这被称为hotlinking prevention。

【讨论】:

【参考方案2】:

我找到了一种通过使用 php 中的 cURL 库绕过盗链保护的方法:

我在与我的 html 网页相同的目录中添加了这个 php 文件“imagegrabber.php”

<?php
header("Content-Type: image");
$url = $_GET['url'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1)AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.1 Safari/537.11');
$res = curl_exec($ch);
$rescode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
curl_close($ch) ;
echo $res;
?>

在我的 html 页面中,我这样称呼这个 php sn-p:

<img src="imagegrabber.php?url=http://www.externalwebsite.com/protectedimage.jpg">

【讨论】:

以上是关于网页中的外部资源在线提供 403,但在本地工作。有没有办法解决?的主要内容,如果未能解决你的问题,请参考以下文章

Heroku 当我在线部署我的应用程序时它崩溃但在我的本地机器上它可以正常工作

file_get_contents 在本地测试可以, 但在服务器上报错403

分享 学习PHP开发过程中的一些好用的在线资源

图片上传可以在本地主机上工作,但不能在线

python爬虫 将在线html网页中的图片链接替换成本地链接并将html文件下载到本地

403错误怎么解决