---
name: "HTTP::Server::Simple::Static"
section: "3pm"
platform: "linux"
package: "libhttp-server-simple-static-perl"
version: "0.14-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/HTTP::Server::Simple::Static"
---

# HTTP::Server::Simple::Static(3pm)

Serve static files with HTTP::Server::Simple

## NAME

HTTP::Server::Simple::Static - Serve static files with HTTP::Server::Simple

## VERSION

This documentation refers to HTTP::Server::Simple::Static version 0.13

## SYNOPSIS

```
    package MyServer;
    use base qw(HTTP::Server::Simple::CGI);
    use HTTP::Server::Simple::Static;
    my $webroot = '/var/www';
    sub handle_request {
        my ( $self, $cgi ) = @_;
        if ( !$self->serve_static( $cgi, $webroot ) ) {
            print "HTTP/1.0 404 Not found\r\n";
            print $cgi->header,
                  $cgi->start_html('Not found'),
                  $cgi->h1('Not found'),
                  $cgi->end_html;
        }
    }
    package main;
    my $server = MyServer->new();
    $server->run();
```

## DESCRIPTION

this mixin adds a method to serve static files from your HTTP::Server::Simple subclass.

## SUBROUTINES/METHODS

- serve\_static( $cgi, $base )

  Takes a reference to the CGI object and a document root path, and tries to serve a static file. Returns 0 if the file does not exist, returns 1 on success.

  This method sets the `"Date"` and `"Last-Modified"` HTTP headers when sending a response for a valid file. Further to this, the method supports clients which send an `"If-Modified-Since"` HTTP header in the request, it will return a 304 `"Not Modified"` response if the file is unchanged. See RFC-2616 for full details.

  If the client makes a `"HEAD"` request then no message body will be returned in the response.

## BUGS AND LIMITATIONS

Bugs or wishlist requests should be submitted via http://rt.cpan.org/

## DEPENDENCIES

The File::LibMagic module is used to detect the MIME-type of a file. The URI::Escape module is used for URI handling. The HTTP::Date module is used to format the timestamp in the Last-Modified HTTP header.

## SEE ALSO

HTTP::Server::Simple, HTTP::Server::Simple::CGI

## AUTHOR

Stephen Quinney `"sjq-perl@jadevine.org.uk"`

Thanks to Marcus Ramberg `"marcus@thefeed.no"` and Simon Cozens for initial implementation.

## LICENSE AND COPYRIGHT

Copyright 2006 - 2017. Stephen Quinney `"sjq-perl@jadevine.org.uk"`

You may distribute this code under the same terms as Perl itself.
