0

我需要在另一个服务器的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(); 

非常感谢您的支持。我在互联网上找到的关于这个问题的资源很少,而且没有一个能解决我的问题。

4

2 回答 2

1

我猜服务器脚本需要 contentObject 的 JSON 字符串表示。但这不是请求模块处理对象的方式,它们被转换为键/值对。

所以改变

content: contentObject

content: JSON.stringify(contentObject)
于 2013-09-01T20:03:18.637 回答
0

POST 方法总是返回 0 状态和空响应

这可能不是直接的答案,但过去几天我遇到了同样的问题。一位通过不同提供商连接到网络的朋友尝试了相同的代码,并且运行良好。另外,如果我没记错的话,我可以连接到端口 80,但不能连接到我发送 POST 请求的端口,这样该端口可能会在您连接的网络上被阻止。

于 2013-12-20T06:36:23.640 回答