Parcourir la source

Pad error pages to 513 bytes so IE actually uses them

The iframe blanking JavaScript won't run if our error page isn't used in the first place.
RichardG867 il y a 5 ans
Parent
commit
e7571d44bd
1 fichiers modifiés avec 9 ajouts et 0 suppressions
  1. 9 0
      waybackproxy.py

+ 9 - 0
waybackproxy.py

@@ -291,6 +291,15 @@ class Handler(socketserver.BaseRequestHandler):
 		errorpage += '</p><hr><i>'
 		errorpage += self.signature()
 		errorpage += '</i></body></html>'
+
+		# add padding for IE
+		if len(errorpage) <= 512:
+			padding = '\n<!-- This comment pads the HTML so Internet Explorer displays this error page instead of its own. '
+			remainder = 510 - len(errorpage) - len(padding)
+			if remainder > 0:
+				padding += ' ' * remainder
+			padding += '-->'
+			errorpage += padding
 		
 		# send error page and stop
 		self.request.sendall('{0} {1} {2}\r\nContent-Type: text/html\r\nContent-Length: {3}\r\n\r\n{4}'.format(http_version, code, reason, len(errorpage), errorpage).encode('utf8', 'ignore'))