2012-05-12 19 views
1

我正在使用WebRequest API來修改由Chrome發送的請求。爲了知道如何重寫請求,我想知道導致發出請求的框架URL是什麼。我看到我可以獲取框架ID和標籤ID,通過它我可以向內容腳本發送消息以找出URI。但是由於消息傳遞始終是異步的,因此似乎無法確保在發送請求之前獲取該信息。使用WebRequest API確定傳出請求的幀URL

這是一個測試工具,而不是普通用戶的東西,所以我不介意引起一些額外的延遲。有誰知道是否有另一種方式來做到這一點?我嘗試過使用setTimeout,但它被內容安全策略阻止。使用引用來源並沒有完全削減它,因爲它沒有設置來自HTTPS幀的HTTP請求。

回答

1

我不確定我是否完全理解你想要完成什麼,但這裏是我的想法。

方案

主要框架谷歌,子幀Facebook和Twitter,並且要修改從Facebook的框架的任何請求!

如果是這種情況,那麼這裏是我要去嘗試的;

1.註冊onCompleted事件偵聽器,它將用於檢索完成的請求信息,即url和frame id,並將它們存儲在一個數組中。

2.Register的onBeforeSendHeaders事件偵聽器,這將被用來檢索請求的信息,並將其,比較對你存儲在上一步中的一個,如果它通過您可以修改標題

所以代碼會是這樣的

onCompleted({存儲信息 - 即URL和一個陣列框架ID-},...)

onBeforeSendHeaders({比較幀編號由具有它們是否匹配修改頭之前存儲的所述一個的請求},...)

差分你的方法和一個我列出

之間

在您的方法中,您使用異步消息在請求發送後檢索有關框架的信息,在我的方法中,您將爲這些信息做好準備,無需執行任何遠程消息傳遞,因此無論何時發生請求,都可以使用它們立即。

希望你會發現這有幫助,祝你好運。

+0

是的,我認爲這可能只是工作,謝謝!我不確定是否有任何保證onCompleted框架將在onBeforeSendHeaders之前爲該框架的子資源運行,但是我可以使用onBeforeRequest,這應該可以做到。 – Miguel