如何知道是否使用AJAX请求访问站点

时间:2012-04-02 01:43:06

标签: php jquery ajax api jsonp

所以,我有一个我的topsite的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请求来访问该站点,或者如果设置了hasVoted参数,是否有办法禁用AJAX请求。

感谢任何帮助,谢谢!

编辑:我在使用&#39; hasVoted&#39;从网站重定向时发送自定义标头参数到其他页面。

编辑问题:如何继续发送带位置的自定义标题?还是我离开这里?

3 个答案:

答案 0 :(得分:2)

非正式地,许多AJAX库添加了一个名为X-Requested-With的自定义HTTP标头,并将值设置为XMLHttpRequest。您可以检查该标头,看看它是否设置为该值,在这种情况下,一个好的假设是它是一个AJAX请求。

但是,没有标准,如果您直接构建XMLHttpRequest(即实现自己的AJAX代码),那么就没有真正的方法可以告诉。

答案 1 :(得分:1)

首先,ajax请求不会像那样跨域工作。该代码不适用于除topsite.com及其子域之外的任何网站。

然而,没有什么可以阻止任何人通过服务器端脚本解析内容。并且没有办法完全阻止人们下载它(你可以让它变得困难,但只要它是公开的,人们就可以下载它)

答案 2 :(得分:0)

可能通过检查用户代理?