对于Firefox附加组件,更有能力替代XMLHttpRequest?

时间:2014-01-04 23:19:22

标签: javascript firefox xmlhttprequest firefox-addon

我目前正在为Firefox编写一个附加组件,它使用XMLHttpRequest向远程服务器发送一些HTTP请求。但是,我遇到了以下限制:

  • XMLHttpRequest透明地遵循HTTP 3xx重定向(这是不受欢迎的)
  • XMLHttpReques t忽略setRequestHeader某些标题(例如User-Agent
  • HTTP基本身份验证也由浏览器处理 - 提示用户输入凭据而无法禁用此行为

由于这些原因(以及可能的其他原因),我正在寻找另一种方法从Firefox附加组件中发送HTTP请求。我看了很多MDN,但没有遇到任何似乎符合我需要的东西。

这样的课程是否存在?

注意:我没有使用SDK。

1 个答案:

答案 0 :(得分:3)

我会继续使用XHR,但会设置自己的通知回调并直接在频道上操纵标题。

每个XHR都有一个频道,通常是nsIHttpChannel,也是nsIHttpChannelInternal(以及其他内容)。

E.g。以下内容应涵盖您的第二点。

var req = new XMLHttpRequest();
if (req.channel instanceof Ci.nsIHttpChannel) {
  req.channel.setRequestHeader("User-Agent", "helloworldbot/1.0", false);
}

I implemented notifications callbacks一段时间回到Scriptish中,允许用户忽略重定向,这或多或少是你的第一点。

auth的东西有点讨厌。您可以将XHR.open()与可选的用户/密码参数一起使用,或者自行构建auth标头和/或通过通知回调实现nsIAuthPrompt / nsIPrompt

如果XHR存在其他问题,您仍然可以转到普通的低级{​​{1}}(channels),尽管XHR提供的所有好东西都不存在了

由于你的问题太不明确,我现在不会详细介绍。