Как узнать, осуществляется ли доступ к сайту по запросу AJAX - PullRequest
2 голосов
/ 02 апреля 2012

Итак, у меня есть API для моего верхнего сайта, который я даю своим пользователям для размещения на своих страницах.

API:

<script type="text/javascript">

 var id = 21;

 $(document).ready(function(){
      $.getJSON("http://topsite.com/index.php?page=vote", { id: id, hasVoted: 'unknown' }, function(data) {
           if(data == 2) {
                window.location.replace("http://topsite.com/index.php?page=vote&id=" + id);
           }
      });
 });

Итак, в основном я хочу, чтобы мои клиенты не размещали этот код на своем сайте:

<script type="text/javascript">$.getJSON("http://topsite.com/index.php?page=vote&id=21");</script>

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

Итак, я хочу знать, есть ли способ узнать, когда для доступа к сайту используется ajax-запрос, или есть ли способ отключить AJAX-запросы, если установлен параметр hasVoted.

Любая помощь приветствуется, спасибо!

РЕДАКТИРОВАТЬ: я буду отправлять пользовательские заголовки при перенаправлении с сайта с параметром hasVoted на другую страницу.

ВОПРОС ДЛЯ РЕДАКТИРОВАНИЯ: как мне продолжить отправку пользовательского заголовка с Location? Или я далеко отсюда?

Ответы [ 3 ]

2 голосов
/ 02 апреля 2012

Неофициально многие библиотеки AJAX добавляют собственный HTTP-заголовок с именем X-Requested-With и устанавливают значение XMLHttpRequest. Вы можете проверить этот заголовок и посмотреть, установлен ли он на это значение, и в этом случае хорошим предположением является то, что это AJAX-запрос.

Однако нет никакого стандарта, и если вы создаете запрос XMLHttpRequest напрямую (т. Е. Реализуете свой собственный код AJAX), то нет реального способа узнать это.

1 голос
/ 02 апреля 2012

Во-первых, ajax-запросы не будут работать таким образом. Этот код не будет работать на любом сайте, кроме topsite.com и его поддоменов.

Однако ничто не мешает анализировать содержимое через скрипт на стороне сервера. И нет никакого способа полностью заблокировать людей от его загрузки (вы можете сделать это затруднительным, но пока это общедоступно, люди могут загрузить это)

0 голосов
/ 02 апреля 2012

Может быть, проверив user-agent?

...