如何知道网站是否被AJAX请求访问


How to know if site is being accessed with AJAX request

因此,我为我的上层提供了一个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请求。

感谢您的帮助!

编辑:当使用"hasVoted"参数从网站重定向到其他页面时,我会发送自定义标题。

编辑问题:我该如何继续发送带有Location的自定义标头?还是我离这里很远?

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

然而,没有标准,如果您直接构建XMLHttpRequest(即实现自己的AJAX代码),那么就没有真正的方法来判断。

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

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

也许通过检查用户代理?