【问题标题】:redirect http request URI in mozilla Addon Builder在 Mozilla Addon Builder 中重定向 http 请求 URI
【发布时间】:2011-12-11 13:01:19
【问题描述】:

我在 Mozilla 的 Addon Builder 中定义了一个 http-on-modify-request 观察者,并希望重定向请求(更改 subject.URI.spec),但 Firefox 抱怨:

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?

我该怎么做?

【问题讨论】:

标签: javascript firefox firefox-addon mozilla firefox-addon-sdk


【解决方案1】:

是的,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 上,那就太好了。

【讨论】:

  • 阅读您引用的页面,在插件 api 更改之前似乎是不可能的?伤心。那么必须与代理保持联系。
  • @nonchip:很难,并非不可能。我提到了一些你可以尝试的东西,stackoverflow.com/questions/5205672/… 到处引用 HTTPS 中的代码。
  • 我实际上尝试在这里实施解决方案,它甚至有点工作:stackoverflow.com/questions/7222577/…
  • @WladimirPalant 您的代码重定向网页,但我需要重定向 ajax 请求和 img.src="..."-requests。
  • @Nickolay HTTPSeverywhere 也仅适用于网页。捕获 onLoad 并导航到另一个 URI 有效,但我需要更多:-/ 我想我会继续使用代理。
猜你喜欢
  • 2020-02-12
  • 1970-01-01
  • 2021-10-01
  • 2012-03-13
  • 1970-01-01
  • 2012-04-17
  • 2019-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多