我正在练习Perl和PSGI/Plack。只需尝试简单的PSGI示例应用程序:
app.psgi
#!/usr/bin/perl
my $counter = 0;
my $app = sub {
my $env = shift;
my $path = $env->{PATH_INFO} || $env->{REQUEST_URI};
$counter++;
my $content = "Hellow world.\nCounter=$counter\nPath: $path\n";
return [ 200, [ 'Content-type', 'text/plain' ], [ $content ] ]
};然后按以下方式运行:
plackup app.psgi如果我将浏览器指向/news/world这样的任何路径:
http://localhost:5000/new/world这很好,我将$path变量设置为/news/world,并将处理cgi响应。
如果我指向像logo.png这样的静态文件的问题
http://localhost:5000/logo.png我还将$path变量设置为/logo.png
问题是,为什么plackup服务器不自动提供静态映像文件logo.png。
我必须手动做这个吗?如果是这样的话,这意味着在每个请求中,我都必须首先对文件系统进行ping,检查是否是-f $path。
这意味着我正在构建一个完整的服务器处理程序,而不仅仅是我的脚本处理程序。我不明白的是。
发布于 2014-08-06 09:31:58
使用Plack::中间件::静态模块。它允许您的应用程序从根目录提供静态文件。
发布于 2014-09-30 20:31:32
Plack::Middleware::Static适用于静态目录。但是您可以处理。您可以尝试将GLOB标量和头application/pdf放在正文中。
https://stackoverflow.com/questions/25156298
复制相似问题