diff --git a/mdserver.py b/mdserver.py
index 86af27fde3d107647d0e1cd5c90165fdb230fb1f..a1338796428bab63e943c2ce075c0a23351e42f7 100755
--- a/mdserver.py
+++ b/mdserver.py
@@ -4,7 +4,7 @@ import copy
 import signal
 
 from lxml import etree as ET
-from flask import Flask
+from flask import Flask, Response
 from urllib.parse import unquote
 from dateutil import parser, tz
 from datetime import datetime
@@ -34,13 +34,14 @@ def sign(eid):
     else:
         sha1 = hasher(entityID)
 
+    response = Response()
+    response.headers['Content-Type'] = "application/samlmetadata+xml"
+
     if sha1 in signed:
         signed_entity = signed[sha1]
         if signed_entity.valid_until > datetime.now(tz.tzutc()):
-            print(f"serve {sha1}")
-            return signed[sha1].md
-
-    if sha1 in idps:
+            response.data = signed[sha1].md
+    elif sha1 in idps:
         try:
             print(f"sign {sha1}")
             valid_until = idps[sha1].valid_until
@@ -51,14 +52,19 @@ def sign(eid):
                 signed_entity.md = signed_xml
                 signed_entity.valid_until = idps[sha1].valid_until
                 signed[sha1] = signed_entity
-                return signed_xml
+                response.data = signed_xml
         except Exception as e:
             print(sha1)
             print(f"  {e}")
             traceback.print_exc()
+    else:
+        response.data = "No valid metadata\n"
+        response.headers['Content-type'] = "text/html"
+        response.status = 404
+        return response
 
-    return "No valid metadata\n", 404
-
+    print(f"serve {sha1}")
+    return response
 
 def read_metadata(signum, frm):
     print("\n--- SIGHUP ---")