This file is indexed.

/usr/share/doc/libghc-happstack-server-doc/html/Happstack-Server-SimpleHTTP.html is in libghc-happstack-server-doc 7.4.5-1build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Happstack.Server.SimpleHTTP</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Happstack-Server-SimpleHTTP.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Happstack-Server-SimpleHTTP.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">happstack-server-7.4.5: Web related tools and services.</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Copyright</th><td>(c) Happstack.com 2010; (c) HAppS Inc 2007</td></tr><tr><th>License</th><td>BSD-like</td></tr><tr><th>Maintainer</th><td>Happstack team &lt;happs@googlegroups.com&gt;</td></tr><tr><th>Stability</th><td>provisional</td></tr><tr><th>Portability</th><td>requires mtl</td></tr><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell98</td></tr></table><p class="caption">Happstack.Server.SimpleHTTP</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">SimpleHTTP</a></li><li><a href="#g:2">Re-exported modules</a><ul><li><a href="#g:3">Basic ServerMonad functionality</a></li><li><a href="#g:4">HTTP Realm Authentication</a></li><li><a href="#g:5">Create and Set Cookies (see also <a href="Happstack-Server-RqData.html">Happstack.Server.RqData</a>)</a></li><li><a href="#g:6">Error Handling</a></li><li><a href="#g:7">Creating Responses</a></li><li><a href="#g:8">Request Routing</a></li><li><a href="#g:9">Proxying</a></li><li><a href="#g:10">Looking up values in Query String, Request Body, and Cookies</a></li><li><a href="#g:11">Output Validation</a></li></ul></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p><code><a href="Happstack-Server-SimpleHTTP.html#v:simpleHTTP">simpleHTTP</a></code> is a self-contained HTTP server which can be used to
 run a <code><a href="Happstack-Server-Internal-Monads.html#t:ServerPart">ServerPart</a></code>.</p><p>A very simple, &quot;Hello World!&quot; web app looks like:</p><pre>import Happstack.Server
main = simpleHTTP nullConf $ ok &quot;Hello World!&quot;</pre><p>By default the server will listen on port 8000. Run the app and point your browser at: <a href="http://localhost:8000/">http://localhost:8000/</a></p><p>For FastCGI support see: <a href="http://hackage.haskell.org/package/happstack-fastcgi">http://hackage.haskell.org/package/happstack-fastcgi</a></p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:simpleHTTP">simpleHTTP</a> :: <a href="Happstack-Server-Response.html#t:ToMessage">ToMessage</a> a =&gt; <a href="Happstack-Server-Internal-Types.html#t:Conf">Conf</a> -&gt; <a href="Happstack-Server-Internal-Monads.html#t:ServerPartT">ServerPartT</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><a href="#v:simpleHTTP-39-">simpleHTTP'</a> :: (<a href="Happstack-Server-Response.html#t:ToMessage">ToMessage</a> b, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> m) =&gt; (<a href="Happstack-Server-Internal-Monads.html#t:UnWebT">UnWebT</a> m a -&gt; <a href="Happstack-Server-Internal-Monads.html#t:UnWebT">UnWebT</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> b) -&gt; <a href="Happstack-Server-Internal-Types.html#t:Conf">Conf</a> -&gt; <a href="Happstack-Server-Internal-Monads.html#t:ServerPartT">ServerPartT</a> m a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><a href="#v:simpleHTTP-39--39-">simpleHTTP''</a> :: (<a href="Happstack-Server-Response.html#t:ToMessage">ToMessage</a> b, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> m) =&gt; <a href="Happstack-Server-Internal-Monads.html#t:ServerPartT">ServerPartT</a> m b -&gt; <a href="Happstack-Server-Internal-Types.html#t:Request">Request</a> -&gt; m <a href="Happstack-Server-Internal-Types.html#t:Response">Response</a></li><li class="src short"><a href="#v:simpleHTTPWithSocket">simpleHTTPWithSocket</a> :: <a href="Happstack-Server-Response.html#t:ToMessage">ToMessage</a> a =&gt; <a href="file:///usr/share/doc/libghc-network-doc/html/Network-Socket.html#t:Socket">Socket</a> -&gt; <a href="Happstack-Server-Internal-Types.html#t:Conf">Conf</a> -&gt; <a href="Happstack-Server-Internal-Monads.html#t:ServerPartT">ServerPartT</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><a href="#v:simpleHTTPWithSocket-39-">simpleHTTPWithSocket'</a> :: (<a href="Happstack-Server-Response.html#t:ToMessage">ToMessage</a> b, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> m) =&gt; (<a href="Happstack-Server-Internal-Monads.html#t:UnWebT">UnWebT</a> m a -&gt; <a href="Happstack-Server-Internal-Monads.html#t:UnWebT">UnWebT</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> b) -&gt; <a href="file:///usr/share/doc/libghc-network-doc/html/Network-Socket.html#t:Socket">Socket</a> -&gt; <a href="Happstack-Server-Internal-Types.html#t:Conf">Conf</a> -&gt; <a href="Happstack-Server-Internal-Monads.html#t:ServerPartT">ServerPartT</a> m a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><a href="#v:bindPort">bindPort</a> :: <a href="Happstack-Server-Internal-Types.html#t:Conf">Conf</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/libghc-network-doc/html/Network-Socket.html#t:Socket">Socket</a></li><li class="src short"><a href="#v:bindIPv4">bindIPv4</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-String.html#t:String">String</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/libghc-network-doc/html/Network-Socket.html#t:Socket">Socket</a></li><li class="src short"><a href="#v:parseConfig">parseConfig</a> :: [<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-String.html#t:String">String</a>] -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Either.html#t:Either">Either</a> [<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-String.html#t:String">String</a>] <a href="Happstack-Server-Internal-Types.html#t:Conf">Conf</a></li><li class="src short"><a href="#v:waitForTermination">waitForTermination</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> ()</li><li class="src short">module <a href="Happstack-Server-Monads.html">Happstack.Server.Monads</a></li><li class="src short">module <a href="Happstack-Server-Auth.html">Happstack.Server.Auth</a></li><li class="src short">module <a href="Happstack-Server-Cookie.html">Happstack.Server.Cookie</a></li><li class="src short">module <a href="Happstack-Server-Error.html">Happstack.Server.Error</a></li><li class="src short">module <a href="Happstack-Server-Response.html">Happstack.Server.Response</a></li><li class="src short">module <a href="Happstack-Server-Routing.html">Happstack.Server.Routing</a></li><li class="src short">module <a href="Happstack-Server-Proxy.html">Happstack.Server.Proxy</a></li><li class="src short">module <a href="Happstack-Server-RqData.html">Happstack.Server.RqData</a></li><li class="src short">module <a href="Happstack-Server-Validation.html">Happstack.Server.Validation</a></li><li class="src short">module <a href="Happstack-Server-Types.html">Happstack.Server.Types</a></li></ul></div><div id="interface"><h1 id="g:1">SimpleHTTP</h1><div class="top"><p class="src"><a name="v:simpleHTTP" class="def">simpleHTTP</a> :: <a href="Happstack-Server-Response.html#t:ToMessage">ToMessage</a> a =&gt; <a href="Happstack-Server-Internal-Types.html#t:Conf">Conf</a> -&gt; <a href="Happstack-Server-Internal-Monads.html#t:ServerPartT">ServerPartT</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> () <a href="src/Happstack-Server-SimpleHTTP.html#simpleHTTP" class="link">Source</a></p><div class="doc"><p>start the server, and handle requests using the supplied
 <code><a href="Happstack-Server-Internal-Monads.html#t:ServerPart">ServerPart</a></code>.</p><p>This function will not return, though it may throw an exception.</p><p>NOTE: The server will only listen on IPv4 due to portability issues
 in the <a href="file:///usr/share/doc/libghc-network-doc/html/Network.html">Network</a> module. For IPv6 support, use
 <code><a href="Happstack-Server-SimpleHTTP.html#v:simpleHTTPWithSocket">simpleHTTPWithSocket</a></code> with custom socket.</p></div></div><div class="top"><p class="src"><a name="v:simpleHTTP-39-" class="def">simpleHTTP'</a> :: (<a href="Happstack-Server-Response.html#t:ToMessage">ToMessage</a> b, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> m) =&gt; (<a href="Happstack-Server-Internal-Monads.html#t:UnWebT">UnWebT</a> m a -&gt; <a href="Happstack-Server-Internal-Monads.html#t:UnWebT">UnWebT</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> b) -&gt; <a href="Happstack-Server-Internal-Types.html#t:Conf">Conf</a> -&gt; <a href="Happstack-Server-Internal-Monads.html#t:ServerPartT">ServerPartT</a> m a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> () <a href="src/Happstack-Server-SimpleHTTP.html#simpleHTTP%27" class="link">Source</a></p><div class="doc"><p>A combination of <code><a href="Happstack-Server-SimpleHTTP.html#v:simpleHTTP-39--39-">simpleHTTP''</a></code> and <code><a href="Happstack-Server-Internal-Monads.html#v:mapServerPartT">mapServerPartT</a></code>.  See
 <code><a href="Happstack-Server-Internal-Monads.html#v:mapServerPartT">mapServerPartT</a></code> for a discussion of the first argument of this
 function.</p><p>NOTE: This function always binds to IPv4 ports until Network
 module is fixed to support IPv6 in a portable way. Use
 <code><a href="Happstack-Server-SimpleHTTP.html#v:simpleHTTPWithSocket">simpleHTTPWithSocket</a></code> with custom socket if you want different
 behaviour.</p></div></div><div class="top"><p class="src"><a name="v:simpleHTTP-39--39-" class="def">simpleHTTP''</a> :: (<a href="Happstack-Server-Response.html#t:ToMessage">ToMessage</a> b, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> m) =&gt; <a href="Happstack-Server-Internal-Monads.html#t:ServerPartT">ServerPartT</a> m b -&gt; <a href="Happstack-Server-Internal-Types.html#t:Request">Request</a> -&gt; m <a href="Happstack-Server-Internal-Types.html#t:Response">Response</a> <a href="src/Happstack-Server-SimpleHTTP.html#simpleHTTP%27%27" class="link">Source</a></p><div class="doc"><p>Generate a result from a <code><a href="Happstack-Server-Internal-Monads.html#t:ServerPartT">ServerPartT</a></code> and a <code><a href="Happstack-Server-Internal-Types.html#t:Request">Request</a></code>. This is
 mainly used by CGI (and fast-cgi) wrappers.</p></div></div><div class="top"><p class="src"><a name="v:simpleHTTPWithSocket" class="def">simpleHTTPWithSocket</a> :: <a href="Happstack-Server-Response.html#t:ToMessage">ToMessage</a> a =&gt; <a href="file:///usr/share/doc/libghc-network-doc/html/Network-Socket.html#t:Socket">Socket</a> -&gt; <a href="Happstack-Server-Internal-Types.html#t:Conf">Conf</a> -&gt; <a href="Happstack-Server-Internal-Monads.html#t:ServerPartT">ServerPartT</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> () <a href="src/Happstack-Server-SimpleHTTP.html#simpleHTTPWithSocket" class="link">Source</a></p><div class="doc"><p>Run <code><a href="Happstack-Server-SimpleHTTP.html#v:simpleHTTP">simpleHTTP</a></code> with a previously bound socket. Useful if you
 want to run happstack as user on port 80. Use something like this:</p><pre>import System.Posix.User (setUserID, UserEntry(..), getUserEntryForName)

main = do
    let conf = nullConf { port = 80 }
    socket &lt;- bindPort conf
    -- do other stuff as root here
    getUserEntryForName &quot;www&quot; &gt;&gt;= setUserID . userID
    -- finally start handling incoming requests
    tid &lt;- forkIO $ simpleHTTPWithSocket socket Nothing conf impl</pre><p>Note: It's important to use the same conf (or at least the same
 port) for <code><a href="Happstack-Server-SimpleHTTP.html#v:bindPort">bindPort</a></code> and <code><a href="Happstack-Server-SimpleHTTP.html#v:simpleHTTPWithSocket">simpleHTTPWithSocket</a></code>.</p><p>see also: <code><a href="Happstack-Server-SimpleHTTP.html#v:bindPort">bindPort</a></code>, <code><a href="Happstack-Server-SimpleHTTP.html#v:bindIPv4">bindIPv4</a></code></p></div></div><div class="top"><p class="src"><a name="v:simpleHTTPWithSocket-39-" class="def">simpleHTTPWithSocket'</a> :: (<a href="Happstack-Server-Response.html#t:ToMessage">ToMessage</a> b, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> m) =&gt; (<a href="Happstack-Server-Internal-Monads.html#t:UnWebT">UnWebT</a> m a -&gt; <a href="Happstack-Server-Internal-Monads.html#t:UnWebT">UnWebT</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> b) -&gt; <a href="file:///usr/share/doc/libghc-network-doc/html/Network-Socket.html#t:Socket">Socket</a> -&gt; <a href="Happstack-Server-Internal-Types.html#t:Conf">Conf</a> -&gt; <a href="Happstack-Server-Internal-Monads.html#t:ServerPartT">ServerPartT</a> m a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> () <a href="src/Happstack-Server-SimpleHTTP.html#simpleHTTPWithSocket%27" class="link">Source</a></p><div class="doc"><p>Like <code><a href="Happstack-Server-SimpleHTTP.html#v:simpleHTTP-39-">simpleHTTP'</a></code> with a socket.</p></div></div><div class="top"><p class="src"><a name="v:bindPort" class="def">bindPort</a> :: <a href="Happstack-Server-Internal-Types.html#t:Conf">Conf</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/libghc-network-doc/html/Network-Socket.html#t:Socket">Socket</a> <a href="src/Happstack-Server-SimpleHTTP.html#bindPort" class="link">Source</a></p><div class="doc"><p>Bind port and return the socket for use with <code><a href="Happstack-Server-SimpleHTTP.html#v:simpleHTTPWithSocket">simpleHTTPWithSocket</a></code>. This
 function always binds to IPv4 ports until Network module is fixed
 to support IPv6 in a portable way.</p></div></div><div class="top"><p class="src"><a name="v:bindIPv4" class="def">bindIPv4</a> <a href="src/Happstack-Server-SimpleHTTP.html#bindIPv4" class="link">Source</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-String.html#t:String">String</a></td><td class="doc"><p>IP address to bind to (must be an IP address and not a host name)</p></td></tr><tr><td class="src">-&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></td><td class="doc"><p>port number to bind to</p></td></tr><tr><td class="src">-&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/libghc-network-doc/html/Network-Socket.html#t:Socket">Socket</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>Bind to ip and port and return the socket for use with <code><a href="Happstack-Server-SimpleHTTP.html#v:simpleHTTPWithSocket">simpleHTTPWithSocket</a></code>.</p><pre>
import Happstack.Server

main = do let conf = nullConf
              addr = &quot;127.0.0.1&quot;
          s &lt;- bindIPv4 addr (port conf)
          simpleHTTPWithSocket s conf $ ok $ toResponse $
            &quot;now listening on ip addr &quot; ++ addr ++
            &quot; and port &quot; ++ show (port conf)</pre></div></div><div class="top"><p class="src"><a name="v:parseConfig" class="def">parseConfig</a> :: [<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-String.html#t:String">String</a>] -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Either.html#t:Either">Either</a> [<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-String.html#t:String">String</a>] <a href="Happstack-Server-Internal-Types.html#t:Conf">Conf</a> <a href="src/Happstack-Server-SimpleHTTP.html#parseConfig" class="link">Source</a></p><div class="doc"><p>Parse command line options into a <code><a href="Happstack-Server-Internal-Types.html#t:Conf">Conf</a></code>.</p></div></div><div class="top"><p class="src"><a name="v:waitForTermination" class="def">waitForTermination</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a> () <a href="src/Happstack-Server-SimpleHTTP.html#waitForTermination" class="link">Source</a></p><div class="doc"><p>Wait for a signal.
   On unix, a signal is sigINT or sigTERM (aka Control-C).</p><p>On windows, the signal is entering: e <a href="return">return</a></p></div></div><h1 id="g:2">Re-exported modules</h1><h2 id="g:3">Basic ServerMonad functionality</h2><div class="top"><p class="src">module <a href="Happstack-Server-Monads.html">Happstack.Server.Monads</a></p></div><h2 id="g:4">HTTP Realm Authentication</h2><div class="top"><p class="src">module <a href="Happstack-Server-Auth.html">Happstack.Server.Auth</a></p></div><h2 id="g:5">Create and Set Cookies (see also <a href="Happstack-Server-RqData.html">Happstack.Server.RqData</a>)</h2><div class="top"><p class="src">module <a href="Happstack-Server-Cookie.html">Happstack.Server.Cookie</a></p></div><h2 id="g:6">Error Handling</h2><div class="top"><p class="src">module <a href="Happstack-Server-Error.html">Happstack.Server.Error</a></p></div><h2 id="g:7">Creating Responses</h2><div class="top"><p class="src">module <a href="Happstack-Server-Response.html">Happstack.Server.Response</a></p></div><h2 id="g:8">Request Routing</h2><div class="top"><p class="src">module <a href="Happstack-Server-Routing.html">Happstack.Server.Routing</a></p></div><h2 id="g:9">Proxying</h2><div class="top"><p class="src">module <a href="Happstack-Server-Proxy.html">Happstack.Server.Proxy</a></p></div><h2 id="g:10">Looking up values in Query String, Request Body, and Cookies</h2><div class="top"><p class="src">module <a href="Happstack-Server-RqData.html">Happstack.Server.RqData</a></p></div><h2 id="g:11">Output Validation</h2><div class="top"><p class="src">module <a href="Happstack-Server-Validation.html">Happstack.Server.Validation</a></p></div><div class="top"><p class="src">module <a href="Happstack-Server-Types.html">Happstack.Server.Types</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>