하도 틀린 곳이 많아서 (특히, MS IIS를 돌리는 곳 가운데) 어디를 딱히 찍어낼 수도 없습니다. text/css나 text/html, text/javascript 등을 http 헤더에 지정하지 않은 채로 파일을 내보내는 곳이 아주 많습니다.
이런 곳이 많은 이유 중 하나는 M$ IE가 http 표준을 무시하고 제멋대로 file type sniffer인지 뭔지 하는 것을 쓰면서 웹 제작자의 버릇을 아주 잘못 들여 놓았기 때문입니다. 표준을 지키는 것이 얼마나 중요한지 보여 주는 단적인 보기입니다.
http 헤더의 Content-Type에 지정한 값을 _무조건_ 믿어야 함에도 불구하고, MS IE는 그것을 믿지 않고 파일 확장자와 파일 첫 부분을 직접 들여다 보고서 제멋대로 파일의 MIME type을 결정합니다. 이 바람에 상당수의 웹 개발자들이 http content-type header field에 제대로 된 값을 지정하지 않은 채로 파일을 내보냅니다. 그럴 경우 서버는 디폴트 값을 쓰므로, html, css 등이 text/html이나 text/css 대신 application/octet-stream이란 머릿표를 달고 클라이언트로 보내집니다. 이런 Content-Type 헤더를 달고 온 파일에 대해 http 표준을 따르는 모질라와 같은 브라우저는 application/octetstream은 자체 처리할 수 없으므로 저장하라는 대화 상자를 띄웁니다. 또 어떤 경우는 text/html이나 text/css 자리에 text/plain이 붙어 있어서 iframe으로 포함시킨 html 문서의 소스가 그대로 보이는 경우도 있습니다.
IIS이든 Apache이든 또다른 웹 서버이든 정적 문서는 확장자 별로 (apache는 필요하면 특정 파일에 대해서만 따로 MIME type을 지정할 수도 있습니다) 기본 MIME type을 지정할 수 있습니다. 웹 서핑 하다가 html 소스가 화면 일부에 보인다든지, MS IE로 볼 때에는 '광고'가 뜨던 부분에서 모질라는 파일을 저장하라는 대화 상자가 뜬다든지 하면 신고해 주십시오. 다 이런 문제 때문입니다.
참, MS IE의 file type sniffer는 어떨 때에는 아주 엉터리입니다. 전에 제가 운영하던 곳에서 database로부터 동적으로 PDF를 생성해서 (LaTeX을 써서) 뿌려 준 적이 있습니다. 물론, application/pdf란 http 헤더를 달아서 내보냈지요. acroread도 군소리 없이 잘 보여 주는 pdf 파일을 보고 MS IE의 filetype sniffer는 제멋대로 pdf가 아니라고 판단하고서 acroread를 띄우는 대신 저장하라고 하더군요.
MIME type 잘못 지정
Re: MIME type 잘못 지정
곧 발표될 Windows XP SP2에서 MIME sniffing 기능을 대폭 수정하겠다는 기사를 본 적이 있는데, 그 때가 되면 문제있는 사이트들 대부분이 수정되지 않을까 생각합니다.
<a href=http://www.google.co.kr/search?q=cache: ... o&ie=UTF-8
target=_blank>http://www.google.co.kr/search?q=cache: ... o&ie=UTF-8
</a>
MIME-handling file type agreement enforcement 항목
<a href=http://www.google.co.kr/search?q=cache: ... o&ie=UTF-8
target=_blank>http://www.google.co.kr/search?q=cache: ... o&ie=UTF-8
</a>
MIME-handling file type agreement enforcement 항목
Re: MIME type 잘못 지정
그렇겠군요. 하지만, 그렇게 고쳐도 MS IE가 하는 방식은 여전히 http 표준 위반입니다. 아예 sniffing을 하지 말아야 합니다. 더구나, 위에 보기로 든 것처럼 멀쩡한 pdf를 pdf가 아니라고 주장하는 엉터리 sniffing은 정말 짜증납니다.
-
- 서포터즈
- Posts: 141
- Joined: 2003 11 19 23:47 55
- Location: 대한민국 어딘가
- Contact:
Re: MIME type 잘못 지정
그나저나 .html이 text/plain으로 오면 어떻게 할런지 궁금하군요. 어쩌면 그냥 렌더링하지 않을까 합니다. 그러면 다른 브라우저 사용자는 여전히 골치가 아프겠지요.
Re: MIME type 잘못 지정
그럴 듯 싶습니다. .html 확장자를 가진 파일을 'text/plain'이란 C-T 헤더를 붙여서 내보내는 써버는 아마 별로 없을 것입니다. (일부러 소스를 보여 주기 위해서 그렇게 하지 않는 한). 제가 본 것은 'html'이나 'htm' 대신 다른 확장자가 붙었지만, text/html인 파일을 'text/plain'이란 헤더를 붙여서 내보내는 경우입니다. MS IE는 html 같아 보이니까 html로 처리하더군요. 모질라는 text/plain으로 처리합니다. 그 파일이 광고 보여주는 부분 (iframe)이라서 피드백도 안 했습니다. 광고 안 보니까 더 좋아서요
또, text/plain이란 C-T 헤더를 앞세워서 binary 파일 (zip, gzip, tar, rar) 등을 내보내는 경우도 아마 고쳐지지 않을 것입니다. 방금 올라온 firebird 게시판에 있는 글이 그런 경우를 다루고 있습니다. C-T 헤더를 통해 type을 identify라고 http 표준에서 정한 데에는 다 이유가 있는데, MS IE가 제멋대로 바꿔 버리니까, 이를 제대로 안 지키는 써버와 써버 쪽 프로그램이 많아졌고, 결국 클라이언트 쪽 구현만 복잡하게 만들어 버렸습니다.
또, text/plain이란 C-T 헤더를 앞세워서 binary 파일 (zip, gzip, tar, rar) 등을 내보내는 경우도 아마 고쳐지지 않을 것입니다. 방금 올라온 firebird 게시판에 있는 글이 그런 경우를 다루고 있습니다. C-T 헤더를 통해 type을 identify라고 http 표준에서 정한 데에는 다 이유가 있는데, MS IE가 제멋대로 바꿔 버리니까, 이를 제대로 안 지키는 써버와 써버 쪽 프로그램이 많아졌고, 결국 클라이언트 쪽 구현만 복잡하게 만들어 버렸습니다.
Who is online
Users browsing this forum: No registered users and 0 guests