我目前正在使用html / css / javascript的动态网站,没有服务器端脚本)
某些内容是使用远程html文件中的ajax请求动态加载的。
我希望仅通过ajax请求访问这些html文件,并且如果它不是ajax调用则执行重定向。原因是如果你直接访问它们,那么不会加载css和网站的其余部分(菜单等)。
所以我的问题是,有没有办法只用Javascript来检测请求的类型? 或者可能有不同的方法来解决这个问题......?
我正在使用jQuery来执行ajax调用,并且我知道jquery在请求中添加了“X-Requested-With”标头。这很容易用php或java来处理,但我找不到如何使用jQuery / Javascript ...
答案 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文件内容。