0

別のサーバーへのFirefoxアドオン内でPOSTメソッドを実行する必要があります。さまざまな方法を使用しようとしていましたが、グーグルで調べた後、main.js内のSDKからRequestモジュールを使用する必要があることがわかりました。

私はFirefox v23を使用しています

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 文字列表現を想定していると思います。しかし、これは request モジュールによってオブジェクトが処理される方法ではなく、キーと値のペアに変換されます。

だから変える

content: contentObject

content: JSON.stringify(contentObject)
于 2013-09-01T20:03:18.637 に答える