Sawyer X > Plack-Middleware-NoMultipleSlashes > Plack::Middleware::NoMultipleSlashes

Download:
Plack-Middleware-NoMultipleSlashes-0.001.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.001   Source  

NAME ^

Plack::Middleware::NoMultipleSlashes - Remove multiple slashes in your paths automatically

VERSION ^

version 0.001

SYNOPSIS ^

Pure Plack:

    # in your app.psgi
    use Plack::Builder;

    my $app = sub { ... };

    builder {
        enable 'NoMultipleSlashes';
        $app;
    };

Or in your Dancer app:

    # in config.yml
    plack_middlewares:
        - [ NoMultipleSlashes ]

DESCRIPTION ^

In short: this removes all multiple slashes from your PATH_INFO. Read on, if you care why.

Multiple slashes in requests are a common problem, which many share. Apparently, the RFC states that you should be able to expect different results from http://server/ and http://server// (notice the second slash), so if the frameworks wish to maintain RFC compatibility, they cannot remove those extra slashes for you.

While you can handle this issue in a reverse proxy, in a rewrite module or in your code, I find it more comfortable to have Plack take care of it in the thin layer called Middlewares.

By enabling this middleware, all multiple slashes in your requests will automatically be cut. //hello///world becomes /hello/world. Simple as that.

ORIGIN ^

This Plack middleware was written originally after the issue was raised in the Dancer (http://perldancer.org) community.

If you're using Dancer, this is the prefered way to handle this issue.

AUTHOR ^

  Sawyer X <xsawyerx@cpan.org>

COPYRIGHT AND LICENSE ^

This software is copyright (c) 2011 by Sawyer X.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

syntax highlighting: