diff --git a/lib/Vend/Server.pm b/lib/Vend/Server.pm
index 5baf109..1280b10 100644
--- a/lib/Vend/Server.pm
+++ b/lib/Vend/Server.pm
@@ -316,10 +316,12 @@ sub parse_cgi {
 	if ($request_method eq 'POST') {
 #::logDebug("content type header: " . $CGI::content_type);
 		## check for valid content type
-		if ($CGI::content_type =~ m{^(?:multipart/form-data|application/x-www-form-urlencoded|application/xml|application/json)\b}i) {
+		if ($CGI::content_type =~ m{^(?:multipart/form-data|application/x-www-form-urlencoded|application/xml|text/xml|application/json)\b}i) {
 			parse_post(\$CGI::query_string, 1)
 				if $Global::TolerateGet;
-			parse_post($h->{entity});
+			if ($CGI::content_type !~ m{^(application/xml|text/xml)\b}i) {
+				parse_post($h->{entity});
+			}
 		}
 		else {
 			## invalid content type for POST
