2008-11-24 47 views
5

是否可以攔截使用javascript從頁面發出的每個請求?即點擊鏈接,加載圖像,ajax請求...攔截源自網頁的每個請求

+0

您能否更詳細地描述目標?解決方案可能太大了。 – Loki 2008-11-24 17:49:29

+0

我的目標是重寫來自頁面的所有請求?一種方法是運行DOM並重寫所有鏈接,但即使如此,一些動態生成的URL也將被忽略。 – akshat 2008-11-24 18:26:16

回答

7

總之,沒有。沒有地方可以獲取所有請求。如上所述,您可以通過javascript將事件處理程序放在鏈接上,查看圖像標記的src屬性等等。沒有「通用」的方式來鉤入所有的AJAX請求 - 這取決於你正在使用的庫。

還有其他的事情要考慮,比如CSS背景圖片,Flash(如果Flash文件發出請求,會怎麼樣?)。

如果可能的話,你應該使用瀏覽器本身(例如Firebug)或代理(如Fiddler)或數據包嗅探器(如飄渺......似乎是WireShark現在)

0

格雷格是對的,沒有一個你可以把所有的請求掛鉤。話雖如此,重寫全部請求的最終目標是什麼?如果您需要爲每個請求添加一個「參數」,然後在服務器端使用它,則一種方法是使用主機頭。您可以在服務器端修改主機頭(即將用戶從your-site.com重定向到your-parameter.your-site.com),之後的所有請求都將包含* your-parameter「。服務器端,你可以使用URL重寫技術來修改url到your-site.com?parameter=你的參數

重定向使用http 302響應代碼 適當的URL重寫組件需要建立在服務器端(mod_rewrite的Apache的,ISAPIrewrite用於ASP.NET)

幾點來說明: 1)用戶不會因爲子域被註銷,並且域共享會話cookie 2)您需要在DNS上設置通配符映射erver 3)瀏覽器緩存效率不高 4)您需要分析已更改url的「業務影響」