Отображение изображения с другого сайта вместо этого отображает странное изображение

#html #caching #image

#HTML #кэширование #изображение

Вопрос:

Я создаю Facebook-приложение, в котором вы можете просматривать лайки вам и вашему другу на веб-странице, на которой отображается множество забавных картинок. Проблема в том, что когда я ссылаюсь на эти изображения, они отображаются как нечто совершенно другое. Как заполнитель или что-то в этом роде. Оно отображается правильно, если оно кэшировано (я думаю).

Взгляните на этот jsfiddle:http://jsfiddle.net/jVBSk / . Если вы щелкните правой кнопкой мыши на изображении, вы получите другое имя файла, отличное от того, что указано в исходном коде.

Как я могу избежать этого, заставляя страницу отображать правильные изображения?

Комментарии:

1. Отображает ли это правильное изображение? windowsnaarlinux.nl/test.php Просто эксперимент. Я вижу, что оно отображает другое изображение, отличное от того, которое отображается в Jsfiddle, но я не знаю, то ли это, которое оно должно показывать.

2. Да, это так. Не возражаете против размещения скрипта в pastebin или что-то в этом роде?

Ответ №1:

Похоже, на нем есть какая-то защита от горячих ссылок. Это сделано не очень хорошо, поэтому его довольно легко обойти.

 <?php
$file = file_get_contents($_GET['image']);
header("Content-Type: image/jpeg");
$image = imagecreatefromstring($file);
imagejpeg($image);
imagedestroy($image);
?>
  

Затем вызовите скрипт следующим образом: script.php?image=http://gif.artige.no/store/10/10002.jpg
URL изображения должен быть закодирован. Это можно сделать с помощью urlencode() PHP, или вот онлайн-инструмент для этого:http://meyerweb.com/eric/tools/dencoder /

Итак, в HTML это было бы что-то вроде этого: <img src="script.php?image=http://gif.artige.no/store/10/10002.jpg" alt="[Image]" />

Комментарии:

1. Я пытался избежать этого, но это выглядит как простое решение. Большое вам спасибо за код, я дополню его ajax, чтобы избежать тайм-аута веб-страниц.

2. Просто хотел сообщить, что в итоге я использовал для этого аналогичную функцию curl. Работает так, как ожидалось.

Ответ №2:

Веб-сайт проверяет реферера, чтобы узнать, является ли это его доменом или нет. Если это не так, оно возвращает это изображение «не кради это». (Если кто-нибудь может это перевести, я уверен, что это то, что он говорит).

Смотрите http://en.wikipedia.org/wiki/HTTP_referrer и http://en.wikipedia.org/wiki/Referrer_spoofing.

Комментарии:

1. Там написано Artige. никто не любит тебя очень сильно по-норвежски: P Есть ли какой-нибудь способ избежать этого? Я не краду изображения, я просто хочу ссылаться на них, вместо того, чтобы загружать каждое из них на свой локальный сервер.

2. РЕДАКТИРОВАТЬ: должен ли я загружать изображения с помощью curl, изменять заголовки, а затем размещать содержимое на странице? Нет способа просто использовать img-тег?

Ответ №3:

То, что вы делаете, называется горячей ссылкой и не одобряется многими владельцами веб-сайтов..

Проблема в том, что вы крадете их пропускную способность, и в качестве решения они предоставляют другое изображение вместо запрошенного, когда запрашивающая страница не из их собственного домена..