繁体   English   中英

jQuery:如何检测Ajax请求是否调用了页面

[英]jQuery: how to detect if a page is called by an ajax request

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

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

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

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

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

将所有内容放在名为“内容”的文件夹中

然后创建一个.htaccess并将其放置在“内容”文件夹中,或者放置在您的apache的配置中(更好):

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

它应该或多或少地完成这项工作。 我不是专家,因此.htaccess可能需要调整(这里的一些Apache杀手想要这么做吗?)

我会说一种方法是使用cookie。 仍然没有将cookie真正用于此目的,并且您会遇到一些问题。 如果您可以控制服务器,则可以只post一些页面。 这些将做ajax的东西。 当页面与“ get ”在一起时,它们就会知道它们适用于浏览器。

请记住没有服务器端控制, 没有安全的方法可以做到这一点 我猜你不在乎。

有些框架设置X-Requested-With ,但是没有真正的方法知道是什么在进行调用,任何人都有可能首先伪造那些标头。

试想一下,您不能向静态网站添加任何动态内容(重定向); 另外,如果您设法在JS上执行此操作,如果将其禁用则会怎样?

您不必担心用户输入错误的页面,因为这不会发生(用户不应尝试创建自己的URL)

如果仍然要执行此操作,请制作PHP或其他解析器以检查是否无法直接访问页面,如果不是,请向用户提供HTML文件内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM