2011-12-11 10 views
3

が、私はMozillaのアドオンBuilderでhttp-on-modify-requestオブザーバを定義し、要求を(subject.URI.specを変更)リダイレクトしたいのですが、Firefoxは文句:モジラアドオンBuilderでリダイレクトhttpリクエストURI

Error: An exception occurred. 
Traceback (most recent call last): 
    File "http://chrome.angrybirds.com/", line 2536, in null 
    File "http://chrome.angrybirds.com/", line 2344, in null 
    File "http://chrome.angrybirds.com/", line 2988, in wi 
    File "http://chrome.angrybirds.com/", line 1756, in ti 
    File "http://chrome.angrybirds.com/", line 1231, in Ji 
    File "http://chrome.angrybirds.com/", line 3366, in Ri 
    File "http://chrome.angrybirds.com/", line 2381, in Di 
    File "http://chrome.angrybirds.com/", line 2956, in Ni 
    File "http://chrome.angrybirds.com/", line 3366, in DHb 
    File "http://chrome.angrybirds.com/", line 3340, in oHb 
    File "http://chrome.angrybirds.com/", line 1869, in Eic 
    File "http://chrome.angrybirds.com/", line 3285, in BS 
    File "http://chrome.angrybirds.com/", line 3362, in _Jb 
    File "http://chrome.angrybirds.com/", line 3054, in _Bb 
    File "http://chrome.angrybirds.com/", line 2020, in dJb 
    File "http://chrome.angrybirds.com/", line 2889, in fJb 
    File "resource://jid0-[snipped id]-api-utils-lib/observer-service.js", line 176, in null 
    this.callback(subject, data); 
    File "resource://jid0-[snipped id]-moddedbirds-url-rewriter-lib/main.js", line 11, in null 
    if(endsWith(s.URI.spec,search)) s.URI.spec=replace; 
[Exception... "Component returned failure code: 0x80004004 (NS_ERROR_ABORT) 
    [nsIURI.spec]" nsresult: "0x80004004 (NS_ERROR_ABORT)" location: "JS frame 
    :: resource://jid0-[snipped id]-api-utils-lib/securable-module.js 
    -> resource://jid0-[snipped id]-moddedbirds-url-rewriter-lib/main.js :: 
    <TOP_LEVEL> :: line 11" data: no] 

なぜそれは動作しませんか?

おそらくhttp-on-modify-requestオブザーバをURIの書き換えに使用できませんか?

どうすればよいですか?

+0

完全な解決策ではありませんが、おそらくこれが役立ちます:http://stackoverflow.com/questions/5205672/modify-url-before-loading-page-in-firefox/5207141#5207141 –

+0

可能な複製[ Firefoxの拡張機能:リクエストをキャンセルして偽のレスポンスを送信する](http://stackoverflow.com/questions/7222577/firefox-extension-cancel-requests-and-emit-fake-responses) –

答えて

3

はい、nsIChannel docs「チャネルに対応するURI。値は不変です。読み取り専用」そして、不変チェックは実際にNS_ERROR_ABORT(source)を返すようです。

残念ながら、この男(Redirecting Request (nsiHttpChannel?) in Firefox Extensions)は彼が見つけた解決策を投稿しませんでした。また、この質問にはmozillazineのherehereが尋ねられます。

私が持っている最良のアイデアは、このためにはあまりにも多くの仕事です:nsITraceableChannelを試してみてください。 Wladimir hereには、「nsIChannel.notificationCallbacksに必要なすべての呼び出しを行い、その後に要求を取り消す」という考えがあります。 Bug 286159はこれに関するいくつかの議論をしています(2005年にこれをきれいにする方法はないようです)。

これは、定期的な質問ですので、あなたがNecko peerからの確認を得た場合、それは素晴らしいことだし、MDC上で、それを文書化。

+0

あなたが参照しているページを読むと、そのように見えますプラグインAPIが変更されるまで不可能ですか?悲しい。プロキシと一緒にいなければなりません。 – nonchip

+0

@nonchip:不可能ではありません。試してみることのできることをいくつか挙げました。http://stackoverflow.com/questions/5205672/modify-url-before-loading-page-in-firefox/ HTTPSのコードをどこでも参照しています。 – Nickolay

+0

私は実際にはここで解決策を実装しようとしましたが、これもうまくいきました:http://stackoverflow.com/questions/7222577/firefox-extension-cancel-requests-and-emit-fake-responses/7226550#7226550 –

関連する問題