diff --git a/Network/Wai/Middleware/MethodOverride.hs b/Network/Wai/Middleware/MethodOverride.hs
--- a/Network/Wai/Middleware/MethodOverride.hs
+++ b/Network/Wai/Middleware/MethodOverride.hs
@@ -6,11 +6,17 @@
 import Network.Wai
 import Control.Monad (join)
 
+-- | Allows overriding of the HTTP request method via the _method query string
+-- parameter.
+--
+-- This middlware only applies when the initial request method is POST. This
+-- allow submitting of normal HTML forms, without worries of semantics
+-- mismatches in the HTTP spec.
 methodOverride :: Middleware
 methodOverride app req =
     app req'
   where
     req' =
-        case join $ lookup "_method" $ queryString req of
-            Nothing -> req
-            Just m -> req { requestMethod = m }
+        case (requestMethod req, join $ lookup "_method" $ queryString req) of
+            ("POST", Just m) -> req { requestMethod = m }
+            _ -> req
diff --git a/wai-extra.cabal b/wai-extra.cabal
--- a/wai-extra.cabal
+++ b/wai-extra.cabal
@@ -1,5 +1,5 @@
 Name:                wai-extra
-Version:             1.2.0.2
+Version:             1.2.0.3
 Synopsis:            Provides some basic WAI handlers and middleware.
 Description:         The goal here is to provide common features without many dependencies.
 License:             MIT
