HORIZON HASKELLDocslts/ghc-9.10.x248f8f02026-10-05Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05

Modulesnap-core-1.0.5.1Haskell2010

Snap.Util.Proxy

This module provides facilities for patching incoming Requests to correct the value of rqClientAddr if the snap server is running behind a proxy.

Example usage:

m :: Snap ()
m = undefined  -- code goes here

applicationHandler :: Snap ()
applicationHandler = behindProxy X_Forwarded_For m
  • 1 type
  • 1 value
datadata ProxyType
#

What kind of proxy is this? Affects which headers behindProxy pulls the original remote address from.

Currently only proxy servers that send X-Forwarded-For or Forwarded-For are supported.

Constructors

Instances4Eq, Ord, Read, Show
valuebehindProxy :: MonadSnap m => ProxyType -> m a -> m a
#

Rewrite rqClientAddr if we're behind a proxy.

Example:

ghci> :set -XOverloadedStrings
ghci> import qualified Data.Map as M
ghci> import qualified Snap.Test as T
ghci> let r = T.get "/foo" M.empty >> T.addHeader "X-Forwarded-For" "1.2.3.4"
ghci> let h = Snap.Core.getsRequest rqClientAddr >>= Snap.Core.writeBS)
ghci> T.runHandler r h
HTTP/1.1 200 OK
server: Snap/test
date: Fri, 08 Aug 2014 14:32:29 GMT

127.0.0.1
ghci> T.runHandler r (behindProxy X_Forwarded_For h)
HTTP/1.1 200 OK
server: Snap/test
date: Fri, 08 Aug 2014 14:33:02 GMT

1.2.3.4