拦截源自网页的每个请求

时间:2008-11-24 17:46:34

标签: javascript

是否可以使用javascript拦截从页面发出的每个请求?即点击链接,加载图片,ajax请求......

2 个答案:

答案 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的“业务影响”