jQuery:如何检测ajax请求是否调用了一个页面

时间:2011-10-31 21:08:29

标签: javascript jquery html

我目前正在使用html / css / javascript的动态网站,没有服务器端脚本)

某些内容是使用远程html文件中的ajax请求动态加载的。

我希望仅通过ajax请求访问这些html文件,并且如果它不是ajax调用则执行重定向。原因是如果你直接访问它们,那么不会加载css和网站的其余部分(菜单等)。

所以我的问题是,有没有办法只用Javascript来检测请求的类型? 或者可能有不同的方法来解决这个问题......?

我正在使用jQuery来执行ajax调用,并且我知道jquery在请求中添加了“X-Requested-With”标头。这很容易用php或java来处理,但我找不到如何使用jQuery / Javascript ...

4 个答案:

答案 0 :(得分:3)

将您的所有内容放在名为«content»

的文件夹中

然后创建一个.htaccess并将其放入“content”文件夹或apache的配置中(更好):

RewriteEngine on
RewriteCond $1 ^content
RewriteCond %{HTTP:x-requested-with} !^XMLHttpRequest$
RewriteRule (.*) http://whereyouwanttoredirect.foo [R=301,L]

它应该或多或少地完成工作。我不是专家,所以也许.htaccess应该有点调整(这里的一些阿帕奇杀手想要这样做?)

答案 1 :(得分:1)

我会说一种方法是使用cookie。仍然没有真正用于此目的的cookie,你会遇到一些问题。如果您可以控制服务器,则只能创建一些页面post。这些会做ajax的东西。当页面被get“获取”时,他们知道这些页面适用于浏览器。

在没有服务器端控制的情况下,请记住 没有安全的方法来执行此操作 。我猜你不在乎。

答案 2 :(得分:1)

某些框架设置X-Requested-With,但没有真正的方法可以知道调用的内容,并且任何人都可以首先伪造这些标头。

答案 3 :(得分:1)

想一想,你不能在静态网站上添加任何动态内容(重定向);另外,如果你设法在JS上做到这一点,如果它被禁用会发生什么等等?

您不应该担心用户输入错误的页面,因为这不会发生(用户不应该尝试制作自己的网址)

如果您还想这样做,请创建一个PHP或其他解析器来检查页面是否未被直接访问,如果没有,请向用户提供HTML文件内容。