Внешний ресурс на веб-странице дает 403 онлайн, но работает на местном. Есть ли способ исправить?
Я пытаюсь вставить изображение с другого сайта в мою веб-страницу. Ссылка на изображение находится в http (не ssl). При запуске страницы на локальном компьютере изображение отображается правильно, но когда я пытаюсь перевести веб-страницу в оперативный режим, запрос изображения выдает ошибку 403 Forbidden на всех хостах, которые я пробовал.
Мне сложно понять, как это работает на местном, но не в Интернете. Есть ли способ обойти эту ошибку 403?
2 ответа
Вполне вероятно, что сервер не позволяет вам встраивать это изображение на ваш сайт. Это известно как предотвращение хотлинкинга.
Я нашел способ обойти защиту от хотлинкинга, используя библиотеку cURL в php:
Я добавил этот php-файл "imagegrabber.php" в тот же каталог, что и моя html-страница.
<?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 так:
<img src="imagegrabber.php?url=http://www.externalwebsite.com/protectedimage.jpg">