如何在POST请求中同时获取GET和POST请求参数?

qod*_*nja 1 perl post cgi get

我正在创建一个带有Perl后端的Facebook应用程序.问题是,由于Facebook将请求作为POST请求发送到我的Web应用程序,我在获取GET参数时遇到问题,这些参数也是应用程序的基本URL的一部分 - 实际上我只获得POST参数来自$ CGI-> Vars.

Ven*_*tsu 13

请参阅CGI/MIXING POST和URL PARAMETERS.

简短版本:$CGI->param()用于后期参数和$CGI->url_param()查询字符串参数.

  • @nodebunny,为什么重要?你的意思是"为什么他们使用不同的方法获取"?为了确保"在任何情况下,URL查询字符串的内容都不会干扰POSTed表单中类似命名的CGI参数." 根据您的说法,此功能对您来说尤为重要. (2认同)

dax*_*xim 5

转储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")]];
}'
Run Code Online (Sandbox Code Playgroud)
> 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
Run Code Online (Sandbox Code Playgroud)