javascript - 可用于 Firefox 附加组件的 XMLHttpRequest 的更强大替代方案?

标签 javascript firefox xmlhttprequest firefox-addon

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

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

出于这些原因(可能还有其他原因),我正在寻找一种替代方法来从 Firefox 插件内发送 HTTP 请求。我在 MDN 上浏览了很多,但没有找到任何可以满足我需求的东西。

是否存在这样的类?

注意:我没有使用 SDK。

最佳答案

我会继续使用 XHR,但设置自己的通知回调并直接在 channel 上操作 header 。

每个XHR都有一个 channel ,(通常)是nsIHttpChannel这也是 nsIHttpChannelInternal (除其他外)。

例如以下内容应涵盖您的第二点。

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

implemented notifications callbacks不久前在 Scriptish 中允许用户忽略重定向,这或多或少是您的第一点。

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

如果 XHR 存在其他问题,您仍然可以转到普通的低级 channel (nsIIOService.newChannel...()),尽管 XHR 提供的所有好处都不再存在了。

由于您的问题太不具体,我现在不会详细说明。

关于javascript - 可用于 Firefox 附加组件的 XMLHttpRequest 的更强大替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20927949/

相关文章:

javascript - 将绝对 div 放置在彼此之间相同的距离上

javascript - 通过纯 JavaScript 添加和删除 id

php - 将列表从 php 或 xmlhttp.responseText 传递到 javascript

php - XMLHttpRequest 在 IE 7/8 中不起作用,但在其他浏览器中起作用

javascript - xhr.open() 对给定的用户名和密码做什么?

javascript - 解释 Chrome 开发工具中的丢帧

javascript - FB.Event.subscribe 在 fb :like post wall dialogue closes 之后响应

firefox - CSS 框阴影问题

javascript - 如何诊断 Firefox 中的 "setting a property that has only a getter"问题

html - Flex 元素忽略 Firefox 中的填充百分比