XMLHttpRequest
サーバーに使用するJavascriptコードに取り組んでPOST
います。
私のコードは次のようになります (そして、Google Chrome のブックマークレットから実行しています):
var a = sometext;
var b = someOtherText;
var msg = "a=" + encodeURIComponent(a) + "&b=" + encodeURIComponent(b);
var server = new XMLHttpRequest();
server.open("POST", "http://localhost:3333", true);
server.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
server.send(msg);
netcat を使用して、コンピューター (Windows 7) のポート 3333 でリッスンしています。コードを初めて実行すると、正常に動作し、netcat を実行しているコマンド プロンプトに、POST
要求、すべてのヘッダー、および送信されたデータの正しい値が表示されます ( msg
)。ただし、(開いている Web ページで) スクリプトを再度実行すると、コマンド プロンプトに新しい情報が表示されなくなります。これは、後のPOST
コマンドが失敗したことを意味すると思います (ただし、Chrome の JavaScript コンソールを見るとエラーはありません)。メッセージ)。netcat リスナーを再起動してスクリプトを再実行すると、最初の実行は正しく機能し、その後の実行は何もしません。
なぜこれが失敗するのかについてのアイデアはありますか?
EDIT:
もう少しいじりましたが、localhostへの接続が閉じられていないようです(または何らかの形でserver
オブジェクト用に予約されています)。スクリプトを実行したタブを閉じると、保持されていたリソースが解放され、スクリプトが再び機能します。
XMLHttpRequest が完了したらすぐに閉じるように指示する方法はありますか? そのためにヘッダーを追加しようとしましたが ( 'Connection: close'
)、許可されていないことがわかりました。また、リクエストを同期に変更してserver.abort()
後で呼び出すことも試みましたが(その機能が正確に何をするかを説明する優れたドキュメントさえ見つかりませんでした)、役に立ちませんでした。1.1 の代わりに HTTP/1.0 を使用して接続するように指定する方法がわかりません。
何か案は?