node.jsのrequestモジュールからPOSTでデータが送信できない時の注意点


node.jsのhttpclientとして使いやすいrequestモジュールですが、少しハマったのでメモしておきます。

何をやりたいかというと、単純にPOSTでどっかにデータを送りたいわけです。

受け口は今回はペライチのPHPプログラムです。

最初、こんな感じのコードを書いていました。

var request = require('request');
request.post({
  uri: 'https://localhost/dump.php',
  body: 'hoge=foo&aaa=bbb'
});

ただし、PHP側の$_POST変数には一向に入る気配がありません。

それを下記のように送信ヘッダのcontent-typeを明示的に指定してあげれば正常に受け取ることが出来ました。

var request = require('request');
request.post({
  uri: 'https://localhost/dump.php',
  body: 'hoge=foo&aaa=bbb',
  headers: {
    'content-type': 'application/x-www-form-urlencoded'
  }
});

とりあえず、簡単にメモ。

追記:2011.11.13 12:38
PHPのソースを直接見たところ、POSTの場合、下記の二つのcontent-typeの場合のみ変数に格納しているようでした。

  • application/x-www-form-urlencoded
  • multipart/form-data

関連記事