diff --git a/happstack-server.cabal b/happstack-server.cabal
--- a/happstack-server.cabal
+++ b/happstack-server.cabal
@@ -1,5 +1,5 @@
 Name:                happstack-server
-Version:             6.2.1
+Version:             6.2.2
 Synopsis:            Web related tools and services.
 Description:         Happstack Server provides an HTTP server and a rich set of functions for routing requests, handling query parameters, generating responses, working with cookies, serving files, and more. For in-depth documentation see the Happstack Crash Course <http://happstack.com/docs/crashcourse/index.html>
 License:             BSD3
diff --git a/src/Happstack/Server/RqData.hs b/src/Happstack/Server/RqData.hs
--- a/src/Happstack/Server/RqData.hs
+++ b/src/Happstack/Server/RqData.hs
@@ -60,6 +60,7 @@
 import Control.Monad.Reader 			(ReaderT(ReaderT, runReaderT), MonadReader(ask, local), mapReaderT)
 import Control.Monad.Error 			(Error(noMsg, strMsg))
 import Control.Monad.Trans                      (MonadIO(..))
+import qualified Data.ByteString.Char8          as P
 import qualified Data.ByteString.Lazy.Char8     as L
 import qualified Data.ByteString.Lazy.UTF8      as LU
 import Data.Char 				(toLower)
@@ -71,7 +72,8 @@
 import qualified Data.Text.Lazy.Encoding        as Text
 import Happstack.Server.Cookie 			(Cookie (cookieValue))
 import Happstack.Server.Internal.Monads         (ServerMonad(askRq, localRq), FilterMonad, WebMonad, ServerPartT, escape)
-import Happstack.Server.Types                   (ContentType(..), Input(inputValue, inputFilename, inputContentType), Response, Request(rqInputsQuery, rqInputsBody, rqCookies, rqMethod), Method(POST,PUT), readInputsBody)
+import Happstack.Server.Internal.RFC822Headers  (parseContentType)
+import Happstack.Server.Types                   (ContentType(..), Input(inputValue, inputFilename, inputContentType), Response, Request(rqInputsQuery, rqInputsBody, rqCookies, rqMethod), Method(POST,PUT), getHeader, readInputsBody)
 import Happstack.Server.Internal.MessageWrap    (BodyPolicy(..), bodyInput, defaultBodyPolicy)
 import Happstack.Server.Response                (internalServerError, requestEntityTooLarge, toResponse)
 
@@ -144,8 +146,19 @@
 instance (MonadIO m) => HasRqData (ServerPartT m) where
     askRqEnv =
         do rq  <- askRq
-           mbi <- liftIO $ readInputsBody rq
+           mbi <- liftIO $ if ((rqMethod rq == POST) || (rqMethod rq == PUT)) && (isDecodable (ctype rq))
+                           then readInputsBody rq
+                           else return (Just [])
            return (rqInputsQuery rq, mbi, rqCookies rq)
+        where
+          ctype :: Request -> Maybe ContentType
+          ctype req = parseContentType . P.unpack =<< getHeader "content-type" req
+          isDecodable :: Maybe ContentType -> Bool
+          isDecodable Nothing                                                      = True -- assume it is application/x-www-form-urlencoded
+          isDecodable (Just (ContentType "application" "x-www-form-urlencoded" _)) = True
+          isDecodable (Just (ContentType "multipart" "form-data" ps))              = True
+          isDecodable (Just _)                                                     = False
+
     rqDataError e = mzero
     localRqEnv f m =
         do rq <- askRq
