【发布时间】:2011-12-16 17:33:15
【问题描述】:
我正在创建一个带有 Perl 后端的 facebook 应用程序。问题是,由于 Facebook 将请求作为 POST 请求发送到我的 Web 应用程序,因此我在获取 GET 参数时遇到了问题,这些参数也是应用程序的基本 URL 的一部分——实际上我只得到了 POST 参数从 $CGI-> 变量。
【问题讨论】:
我正在创建一个带有 Perl 后端的 facebook 应用程序。问题是,由于 Facebook 将请求作为 POST 请求发送到我的 Web 应用程序,因此我在获取 GET 参数时遇到了问题,这些参数也是应用程序的基本 URL 的一部分——实际上我只得到了 POST 参数从 $CGI-> 变量。
【问题讨论】:
见CGI/MIXING POST AND URL PARAMETERS。
短版:使用$CGI->param() 作为post 参数,使用$CGI->url_param() 作为查询字符串参数。
【讨论】:
转储 CGI 以支持更好的界面。 Plack 的param 方法返回混合的GET 和POST 参数。
plackup -MPlack::Request -e 'sub {
my ($env) = @_;
my $r = Plack::Request->new($env);
return [200, ["Content-Type" => "text/plain"], [join "\n", $r->param("foo")]];
}'
> lwp-request -m POST -USe 'http://localhost:5000/fnord?foo=bar;baz=quux'
Please enter content (application/x-www-form-urlencoded) to be POSTed:
foo=123;baz=456
␄
POST http://localhost:5000/fnord?foo=bar;baz=quux
User-Agent: lwp-request/6.03 libwww-perl/6.03
Content-Length: 16
Content-Type: application/x-www-form-urlencoded
200 OK
Date: Thu, 27 Oct 2011 21:27:46 GMT
Server: HTTP::Server::PSGI
Content-Length: 7
Content-Type: text/plain
Client-Date: Thu, 27 Oct 2011 21:27:46 GMT
Client-Peer: 127.0.0.1:5000
Client-Response-Num: 1
bar
123
【讨论】:
【讨论】: