おたむはうぇぶじぇね

ウェブ制作会社に勤めるおたむの創作備忘録

Perl で HTTPS を利用した POST

Program > Perl

07.09.24 23:34

PHP で SSL 越しの POST ができない、というドキュメントがちらほら見られたので、Perl でも障害になりうる場所かな、とか思っていたら見事にハマる。

ここで言う POST は、HTML の submit ボタンを押下して POST 、という流れではなく、スクリプトを実行すると、ウェブサーバへパラメータが POST されるというもの。
つまりトリガーが違うのね。

HTTP だと Perl の Socket:: というライブラリを利用することで可能だったのだが、HTTPS だと上手く行かなかった。サーバから返されるエラーメッセージには、クライアントが SSL に対応していないとのこと。

なので LWPHTTP を使うこととなった。

use LWP::UserAgent;
use HTTP::Request;
use HTTP::Request::Common qw(POST);
$ss = "パラメータだこの野郎!!";
my $url = 'https://www.example.jp/hoge.php';
my %formdata;
$formdata{'ss'} = $ss;
my $request = POST($url,[%formdata]);
$request->init_header('User-Agent' => 'Linux');
my $ua = LWP::UserAgent->new;
my $res = $ua->request($request);
print $res->as_string;
exit;

こいつを実行すると、https://www.example.jp/hoge.php にパラメータが POST される。
PHP の場合は $_POST["ss"] で "パラメータだこの野郎!!" が参照できる。

# これで SSL 通信ができない場合には
補足を参照。

Tags :: , , , ,

Author :: おたむ