HTTP::Server::Simple::PSGI is a HTTP::Server::Simple based HTTP server
that can run PSGI applications. This module only depends on
HTTP::Server::Simple, which itself doesn't depend on any non-core
modules so it's best to be used as an embedded web server.
This module allows you to record all HTTP communication between an
HTTP::Server::Simple-derived server and its clients. It is a mixin, so
it doesn't itself subclass HTTP::Server::Simple; you need to subclass
from both HTTP::Server::Simple::Recorder and an actual
HTTP::Server::Simple subclass, and HTTP::Server::Simple::Recorder should
be listed first.
Mozilla Firefox is a free and open source web browser descended from the
Mozilla Application Suite. It is small, fast and easy to use, and offers
many advanced features:
o Popup Blocking
o Tabbed Browsing
o Live Bookmarks (ie. RSS)
o Extensions
o Themes
o FastFind
o Improved Security
HTTP::Thin is a thin wrapper around HTTP::Tiny adding the ability to pass in
HTTP::Request objects and get back HTTP::Response objects. The maintainers of
HTTP::Tiny, justifiably, don't want to have to maintain compatibility but many
other projects already consume the HTTP::Message objects. This is just glue code
doing what it does best.
This module parses HTTP headers using a C++ state machine. The goal is
to be fast, not necessarily to do everything you could ever want.
Headers are not static, you can parse them, munge them, or even build
them using this module.
LWPx::ParanoidAgent is a class subclassing LWP::UserAgent, but
paranoid against attackers. It's to be used when you're fetching
a remote resource on behalf of a possibly malicious user.
This class can do whatever LWP::UserAgent can (callbacks, uploads
from files, etc), except proxy support is explicitly removed, because
in that case you should do your paranoia at your proxy.
Also, the schemes are limited to http and https, which are mapped to
LWPx::Protocol::http_paranoid and LWPx::Protocol::https_paranoid,
respectively, which are forked versions of the same ones without
the "_paranoid". Subclassing them didn't look possible, as they were
essentially just one huge function.
This class protects you from connecting to internal IP ranges
(unless you whitelist them), hostnames/IPs that you blacklist, remote
webserver tarpitting your process (the timeout parameter is changed to
be a global timeout over the entire process), and all combinations of
redirects and DNS tricks to otherwise tarpit and/or connect to internal
resources.
LWPx::TimedHTTP performs an HTTP request exactly the same as LWP does normally
except for the fact that it times each stage of the request and then inserts the
results as header.
It's useful for debugging where abouts in a connection slow downs are occuring.
ParallelUserAgent allows you to connect to multiple sites _in parallel_!
You can register a number of requests, then call the 'wait' method and see
how the requests come in as each server responds.
ParallelUserAgent is basically an extension of the current UserAgent and
RobotUA modules that come with libwww5. It installs into the ::Parallel
subtree under the standard LWP directory that ships with libwww5.
Plack::Middleware::IEnosniff is middleware for Plack. This middleware
adds HTTP Header 'X-Content-Type-Options: nosniff' for safe. Sending
X-Content-Type-Options response header with the value nosniff will
prevent Internet Explorer from MIME-sniffing a response away from the
declared content-type.
Writing RESTful apps is a good thing, but if you're also trying to support web
browsers, you're probably going to need some hackish workarounds. This module
provides one such workaround for your Plack applications.
Specifically, you can also use a header named X-HTTP-Method-Override (as used by
Google for its APIs) override the POST request method. Or you can add a
parameter named x-tunneled-method to your form action's query. Either way, the
overriding works only via POST requests, not GET.
If either of these attributes are available in a POST request, the
REQUEST_METHOD key of the Plack environment hash will be replaced with its
value. This allows your apps to override any HTTP method over POST. If your
application needs to know that such overriding has taken place, the original
method is stored under the plack.original_request_method key in the Plack
environment hash.
The list of methods you can specify are: GET, POST, HEAD, PUT, DELETE, OPTIONS,
TRACE and CONNECT.