Условное размещение логотипа на удаленном сайте

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

в основном я хочу, чтобы у пользователя был такой фрагмент кода:

//include jquery for post
<script type="text/javascript" language="javascript" src="http://www.mysite.com/jquery.js"></script>

<script language="javascript">
    $.post("http://www.mysite.com/test.php", {requesting_id:"12345", requesting_address:window.location.host}, function(data){
    document.write(data);
  });
</script>

test.php проверяет переданные переменные в соответствии с базой данных sql. Если идентификатор, который они передают, совпадает с веб-адресом, запрашивающим файл, и если мы согласились продолжить показ нашего логотипа на их странице (true/false), он возвращает изображение.

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

Есть ли простой способ сделать это? Я часами искал метод и у меня нет идей.

Спасибо за помощь!

4 ответа

Решение

Я бы не стал использовать javascript для этого и определенно не требовал бы, чтобы все эти сайты включали jquery.

Если вы используете php, проще всего подать изображение из файла php. Изображение будет выглядеть так:

<img src="http://yoursite.com/image.php?request_id=XXXX">

и вы делаете PHP-скрипт, который обслуживает изображение на основе request_id.

Вам нужно будет прочитать изображение с вашего сервера в php и предоставить его с header("Content-type: image/jpeg") (в случае JPEG...).

Если у вас есть изображение в переменной, вывод (для jpeg...) будет просто что-то вроде:

header("Content-type: image/jpeg");
imagejpeg ($image);

На вашей стороне был бы скрипт для jpg, который проверяет свойство HTTP_REFERRER.

тогда клиент просто загрузит:

<img src="http://yourweb-site.com/logo.php?id=clientid"/> 

http://www.electrictoolbox.com/php-http-referer-variable/

Существуют некоторые серьезные проблемы с безопасностью, позволяющие сценариям работать с объектами, расположенными в разных доменах. Вместо того, чтобы пытаться разрешить их на стороне клиента, почему бы не разрешить пользователю размещать статический URL-адрес на своей странице, и вы оцениваете на стороне сервера, имеет ли право пользователь? Если они есть, подайте файл. Если нет, подайте прозрачный.gif, чтобы их сайт не был поврежден. В любом случае вы полностью избегаете проблем с межсайтовым скриптингом.

Как написано в документах jQuery

Из-за ограничений безопасности браузера большинство запросов "Ajax" подчиняются той же политике происхождения; запрос не может успешно получить данные из другого домена, субдомена или протокола.

Вы можете использовать URL-адрес, например "http://img.example.com/logo? Requestting_id=12345...", и просто поместить изображение в качестве выходного или создать iframe...

Другие вопросы по тегам