2011-05-07 4 views
0

콘텐츠 유형 헤더가 서버로 전송되지 않았지만 client.py의 결과는 text/plain입니다.
왜?왜 wsgiref.simple_server는 내용 유형이 'text/plain'인지보고하지 않은 요청을보고합니까?

# ---------------------------------------------- server.py 
from wsgiref.simple_server import make_server 

def simple_app(environ, start_response): 
    print environ.get('CONTENT_TYPE') 
    start_response('200 OK', []) 
    return [] 

make_server('localhost', 88, simple_app).serve_forever() 

# ---------------------------------------------- client.py 
import subprocess 
import urllib2 

p = subprocess.Popen(['python', '-u', 'server.py']) 
req = urllib2.Request('http://localhost:88', headers={}) 
assert not req.has_header('content-type') 
urllib2.urlopen(req).read() 
p.terminate() 

답변

1

유형 text/plainsection 5.2 Content Type Defaults에서 MIME의 기본이다.

WSGI simple_server 차례로 클라이언트에서 보낸 헤더를 구문 분석 할 mimetools.Message 클래스를 사용 BaseHTTPRequestHandler 사용

- 여기가 기본 설정 :

# mimetools.py 

class Message(rfc822.Message): 

    def parsetype(self): 
     str = self.typeheader 
     if str is None: 
      str = 'text/plain'