CGI.pmでtext/xmlなPOSTデータを読みたい場合
CGI.pmでtext/xmlなPOSTデータを読みたい場合、
my $q = CGI->new; $q->param('POSTDATA')
で読める。いままで知りませんでした。
正確には、x-www-form-urlencoded や
multipart/form-dataではない場合に、POSTデータはPOSTDATAで読み出せる。ソースでは、
# YL: Begin Change for XML handler 10/19/2001 if ($meth eq 'POST' && defined($ENV{'CONTENT_TYPE'}) && $ENV{'CONTENT_TYPE'} !~ m|^application/x-www-form-urlencoded| && $ENV{'CONTENT_TYPE'} !~ m|^multipart/form-data| ) { my($param) = 'POSTDATA' ; $self->add_parameter($param) ; push (@{$self->{$param}},$query_string); undef $query_string ; } # YL: End Change for XML handler 10/19/2001
このようになっている。CGI.pmのcgi_docs.htmlにも書いてありました。
これを使うとAjaxやFlashのXMLリクエストの取得がスムーズだし、Web
APIがCGI.pmを使っていても書けそうだ。