【问题标题】:How can I get both the GET and POST request params, on a POST request?如何在 POST 请求中同时获取 GET 和 POST 请求参数?
【发布时间】:2011-12-16 17:33:15
【问题描述】:

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

【问题讨论】:

    标签: perl post get cgi


    【解决方案1】:

    CGI/MIXING POST AND URL PARAMETERS

    短版:使用$CGI->param() 作为post 参数,使用$CGI->url_param() 作为查询字符串参数。

    【讨论】:

    • 问题是 URL 使用 get 参数来跟踪应用程序状态,我想这个想法是不要混合 get 和 post 参数——除了它是 RFC 标准的一部分我不明白为什么这很重要——它没有改变服务器上的任何东西,它只是检测要执行哪个步骤
    • @nodebunny,为什么重要?您的意思是“为什么使用不同的方法获取它们”?确保“在任何情况下,URL 查询字符串的内容都不会干扰 POST 表单中名称相似的 CGI 参数。”根据你所说,这个功能对你来说应该特别重要。
    • 为什么将 GET 和 POST 分开很重要...但我想我理解其中的含义。您不希望能够将某些内容设置为 GET 参数并将其视为 POST 参数,否则会违背 POST 的目的,对吗?但是出于我的目的,我只是在寻找特定的参数,所以我猜它是一个静音点。我需要的参数是否获取或发布无关紧要。但我现在更了解情况了。 +1 讨论
    【解决方案2】:

    转储 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
    

    【讨论】:

      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-12
        • 1970-01-01
        • 2016-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多