[英]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.