Условное размещение логотипа на удаленном сайте
Я пытаюсь создать фрагмент кода для определенной группы людей, которые заслужили право размещать нашу печать на своем веб-сайте. Сначала эта идея казалась достаточно простой, пока я не попытался реализовать ее на другом веб-сайте для тестирования.
в основном я хочу, чтобы у пользователя был такой фрагмент кода:
//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"/>
Существуют некоторые серьезные проблемы с безопасностью, позволяющие сценариям работать с объектами, расположенными в разных доменах. Вместо того, чтобы пытаться разрешить их на стороне клиента, почему бы не разрешить пользователю размещать статический URL-адрес на своей странице, и вы оцениваете на стороне сервера, имеет ли право пользователь? Если они есть, подайте файл. Если нет, подайте прозрачный.gif, чтобы их сайт не был поврежден. В любом случае вы полностью избегаете проблем с межсайтовым скриптингом.
Как написано в документах jQuery
Из-за ограничений безопасности браузера большинство запросов "Ajax" подчиняются той же политике происхождения; запрос не может успешно получить данные из другого домена, субдомена или протокола.
Вы можете использовать URL-адрес, например "http://img.example.com/logo? Requestting_id=12345...", и просто поместить изображение в качестве выходного или создать iframe...