Plack 如何调试请求?
How can Plack debug a request?
我正在使用 Plack 调试 HTTP 客户端,其中 plack 服务器侦听端口 80,客户端发送请求。我如何使用 Plack 查看客户端请求?我正在尝试做这样的事情:
my $app = sub {
my $self = shift;
[200, ['Content-Type' => 'text/html'], [ $self ]];
};
如何调试请求?
PSGI/Plack 是对 HTTP 的抽象。它的目标是不必为实现细节操心(和没有它一样)。在您的应用程序看到请求时,它已经被解析为 $env
并且在 Plack 的表示中。
你可以猴子修补一些东西到 Plack::HTTPParser::PP 来转储 $chunk
s 出来看看有什么进来。你必须在你的环境中设置 PLACK_HTTP_PARSER_PP=1
以确保它加载纯 Perl 版本。
然而这看起来真的很乏味。如果您使用 Linux,则可以使用 netcat (nc
)。在您的端口上监听,并向您正在测试的客户端发送请求。
$ nc -l 3000
GET / HTTP/1.1
Host: localhost:3000
User-Agent: curl/7.68.0
Accept: */*
在另一个终端上...
$ curl localhost:3000
如果您不关心确切的表示形式,而只关心它在解析后是否包含正确的内容,请先在您的 Plack 应用程序中转储 $env
。
我正在使用 Plack 调试 HTTP 客户端,其中 plack 服务器侦听端口 80,客户端发送请求。我如何使用 Plack 查看客户端请求?我正在尝试做这样的事情:
my $app = sub {
my $self = shift;
[200, ['Content-Type' => 'text/html'], [ $self ]];
};
如何调试请求?
PSGI/Plack 是对 HTTP 的抽象。它的目标是不必为实现细节操心(和没有它一样)。在您的应用程序看到请求时,它已经被解析为 $env
并且在 Plack 的表示中。
你可以猴子修补一些东西到 Plack::HTTPParser::PP 来转储 $chunk
s 出来看看有什么进来。你必须在你的环境中设置 PLACK_HTTP_PARSER_PP=1
以确保它加载纯 Perl 版本。
然而这看起来真的很乏味。如果您使用 Linux,则可以使用 netcat (nc
)。在您的端口上监听,并向您正在测试的客户端发送请求。
$ nc -l 3000
GET / HTTP/1.1
Host: localhost:3000
User-Agent: curl/7.68.0
Accept: */*
在另一个终端上...
$ curl localhost:3000
如果您不关心确切的表示形式,而只关心它在解析后是否包含正确的内容,请先在您的 Plack 应用程序中转储 $env
。