是否可以使用javascript拦截从页面发出的每个请求?即点击链接,加载图片,ajax请求......
答案 0 :(得分:7)
总之,没有。没有地方可以用来获取所有请求。
话虽如此,您可以使用javascript在链接上放置事件处理程序,查看图像标记的src属性等等。没有“通用”方法可以挂钩所有AJAX请求 - 这取决于你正在使用的库。
还有其他需要考虑的事项,例如CSS背景图片,Flash(如果Flash文件发出请求会怎样?)。
如果可能的话,你应该使用浏览器本身(例如Firebug)或代理(例如Fiddler)或数据包嗅探器(例如Ethereal ......似乎现在WireShark )
答案 1 :(得分:0)
Greg是对的,没有一个地方可以挂钩所有请求。话虽如此,重写所有请求的最终目标是什么?如果您需要为每个请求添加“参数”,然后在服务器端使用它,那么一种方法是主机头。您可以修改服务器端的主机头(即将用户从your-site.com重定向到your-parameter.your-site.com),之后的所有请求都将包含* your-parameter“。在服务器端,您可以使用网址重写技术将网址修改为your-site.com?parameter=your-parameter。
对于重定向使用http 302响应代码。 需要在服务器端设置适当的url-rewriting组件(apache的mod_rewrite,ASP.NET的ISAPIrewrite)
有些要点: 1)由于子域和域共享会话cookie,用户将不会被注销 2)您需要在DNS服务器上设置通配符映射 3)浏览器缓存不会那么有效 4)您需要分析已更改URL的“业务影响”