2011-11-17 3 views
0

답변을 찾을 수없는 복잡한 문제가 있습니다.Firefox에서만 페이지가 아닌 HTML 코드가 표시됩니다.

웹 페이지를 제공하는 Python HTTPServer를 실행하고 있습니다. 이 웹 페이지는 Beautiful Soup의 도움으로 런타임에 생성됩니다. 문제는 파이어 폭스가 실제 페이지가 아닌 웹 페이지에 대한 HTML 코드를 표시한다는 것입니다. - - 파이썬 HTTP 서버 - 아름다운 수프 - 난 정말이 문제의 원인이 누구인지 모르는 HTML 코드를 웹 페이지의 HTML의

어떤 경우, 내가 복사 한 부분 : -

<?xml version="1.0" encoding="iso-8859-1"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
    <title> 
    My title 
    </title> 
    <link href="style.css" rel="stylesheet" type="text/css" /> 
    <script src="./123_ui.js"> 
    </script> 
</head> 
<body> 
    <div> 
    Hellos 
    </div> 
</body> 
</html> 

그냥 내가 이미 시도한 것을 여기에있다. - 파이썬 HTTPServer가 MIME 헤더를 text/html로 보내고있다. - HTML 코드를 복사하여 붙여 넣기 만하면 올바른 페이지가 정적으로 표시된다. 여기에서 문제가 HTTPServer 측에 있음을 알 수 있습니다. - Firebug는 이것이 비어 있고 "이 요소에 스타일 규칙이 없습니다. 규칙을 만들 수 있습니다."라고 표시합니다. 표시됩니다

그냥 오류가 아름다운 스프 또는 HTTPServer 또는 HTML에 있는지 알고 싶습니까?

덕분에, 미트는

답변

2

왜 문서의 상단이 추가? 브라우저가 전체 문서가 XML하지XHTML 생각하게됩니다

<?xml version="1.0" encoding="iso-8859-1"?> 

. 해당 줄을 제거하면 올바르게 렌더링됩니다. 파이어 폭스는 HTTP 헤더가 text/html이라고 말할지라도, 일반적으로 XML 문서와 같은 내용을보기 위해 펼치거나 접을 수있는 여러 요소가있는 페이지를 표시한다고 가정합니다.

+0

당신이 말할 필요가 없습니다. 좋아, 나는 그것을 제거하고 여전히 동일합니다. xml 태그의 유무에 관계없이 동일한 문제가 발생합니다. – abarik

+0

온라인으로 볼 수있는 곳이 있습니까? – animuson

+0

얘들 아, 나는이 문제를 마침내 해결했다. 그 이유는 콘텐츠 유형 "text/html"로 MIME 헤더를 보내지 않았기 때문입니다. 파일에 내용을 쓰기 전에 항상 파이썬 HTTPServer에서 다음을 수행하십시오. - \t self.send_response (301) \t self.send_header ("위치", self.path + "/") \t self.end_headers() 위의 방법이라고하면 \t #, 당신은 클라이언트 \t 자체에 HTML을 보낼 수 있습니다 .wfile.write ('쓰고 싶은 HTML 코드') – abarik

0

그래서 얘들 아, 나는이 문제를 마침내 풀었습니다. 그 이유는 있었다 당신은 항상 이렇게 내가 파일에 아무것도를 작성하기 전에, 파이썬 HTTP 서버에서 콘텐츠 형식으로 (내가 생각했던에도 불구하고) "text/html과"

을 MIME 헤더를 전송되지 않았기 때문에 -

self.send_response(301) 
self.send_header("Location", self.path + "/") 
self.end_headers() 
# Once you have called the above methods, you can send the HTML to Client               
self.wfile.write('ANY HTML CODE YOU WANT TO WRITE')