@@ -611,12 +611,17 @@ def session_id(self):
611
611
def session (self ):
612
612
return self ._session
613
613
614
+ @property
615
+ def path_info (self ):
616
+ return self .environ ['PATH_INFO' ]
617
+
614
618
def start_response (self , status_code = 200 , headers = None ):
615
619
buffers = self ._buffers
616
620
if self ._headers_responsed :
617
621
raise ValueError ('Http headers already responsed.' )
618
622
response_headers = {}
619
623
response_headers ['Server' ] = server_info
624
+ response_headers ['Content-Type' ] = 'text/html;charset=utf-8'
620
625
status_code = int (status_code )
621
626
status_text = http_status_codes [status_code ]
622
627
buffers .write ('HTTP/1.1 %d %s\r \n ' % (status_code , status_text ))
@@ -656,7 +661,7 @@ def _finish(self, content):
656
661
rw = self ._rw
657
662
if not self ._headers_responsed :
658
663
self .start_response (200 )
659
- rw .write (self ._buffers .getvalue ())
664
+ rw .write (self ._buffers .getvalue ())
660
665
if isinstance (content , basestring ):
661
666
rw .write (content )
662
667
else :
@@ -699,7 +704,12 @@ def _handler(self):
699
704
path = double_slash_sub ('/' , path )
700
705
if path != path_info :
701
706
result = self .redirect (path )
702
- return self ._finish (result )
707
+ try :
708
+ return self ._finish (result )
709
+ except :
710
+ content = exceptions .html_error_template ().render ()
711
+ result = self ._response (500 , content = content )
712
+ return self ._finish (result )
703
713
base , name = path_split (path )
704
714
if not name :
705
715
name = app .config .default_page
@@ -717,7 +727,11 @@ def _handler(self):
717
727
result = self ._response (500 )
718
728
return self ._finish (result )
719
729
else :
720
- return self ._finish (result )
730
+ try :
731
+ return self ._finish (result )
732
+ except :
733
+ result = exceptions .html_error_template ().render ()
734
+ return self ._finish (result )
721
735
litefile = app .files .get (path )
722
736
if litefile is not None :
723
737
return litefile .handler (self )
@@ -745,7 +759,11 @@ def _handler(self):
745
759
result = self ._response (500 )
746
760
return self ._finish (result )
747
761
else :
748
- return self ._finish (result )
762
+ try :
763
+ return self ._finish (result )
764
+ except :
765
+ result = exceptions .html_error_template ().render ()
766
+ return self ._finish (result )
749
767
try :
750
768
litefile = self ._load_static_file (base , name )
751
769
except IOError :
0 commit comments