我目前正在为Firefox编写一个附加组件,它使用XMLHttpRequest
向远程服务器发送一些HTTP请求。但是,我遇到了以下限制:
XMLHttpRequest
透明地遵循HTTP 3xx重定向(这是不受欢迎的)XMLHttpReques
t忽略setRequestHeader
某些标题(例如User-Agent
)由于这些原因(以及可能的其他原因),我正在寻找另一种方法从Firefox附加组件中发送HTTP请求。我看了很多MDN,但没有遇到任何似乎符合我需要的东西。
这样的课程是否存在?
注意:我没有使用SDK。
答案 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提供的所有好东西都不存在了
由于你的问题太不明确,我现在不会详细介绍。