我需要在另一台服务器的firefox附加组件中执行POST方法,我一直在尝试使用不同的方法,在谷歌搜索后我发现我应该使用我的main.js中的SDK中的Request模块。
我正在使用firefox v 23
我尝试使用chrome模块
var xmlhttp = chrome.Cc["@mozilla.org/xmlextras/xmlhttprequest;1"]
.createInstance(chrome.Ci.nsIXMLHttpRequest);
但我得到了 NS_ERROR_FAILURE 。我甚至在package.json
中添加了权限"permissions": {
"cross-domain-content": ["https:[some url]"]
}
但它仍然会出现同样的错误。
然后我使用了Request模块,但到目前为止还没有工作。我尝试使用Request模块的GET方法,它工作正常。但POST方法总是返回 0 状态和空响应。
我尝试通过浏览器http客户端执行相同的请求,它运行良好!但是通过加载项中的代码,它总是返回0。
请求设置标头,当然还有一个有效负载。
var contentObject = {[Valid JSON Object]};
var myRequest = Request({
url: "https://[some url]",
headers: {
"pragma": "no-cache"
},
content: contentObject,
contentType: "application/json",
onComplete: function (response) {
console.log("Status: " + response.status);
console.log("Response json: " + JSON.stringify(response));
}
}).post();
非常感谢您的支持。我在互联网上找到的关于这个问题的资源很少,而且没有解决我的问题。
答案 0 :(得分:1)
我想服务器脚本需要contentObject的JSON字符串表示。但这不是请求模块如何处理对象,而是将它们转换为键/值对。
所以改变
content: contentObject
到
content: JSON.stringify(contentObject)
答案 1 :(得分:0)
POST方法始终返回0状态和空响应
这可能不是直接的答案,但过去几天我遇到了同样的问题。通过不同提供商连接到网络的朋友尝试了相同的代码并且工作正常。此外,如果我没记错的话,我可以连接到端口80,但不能连接到我发送POST请求的端口,这样端口可能会在您连接的网络上被阻塞。