MIME type 잘못 지정
Posted: 2004 02 05 23:27 09
하도 틀린 곳이 많아서 (특히, 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를 띄우는 대신 저장하라고 하더군요.
이런 곳이 많은 이유 중 하나는 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를 띄우는 대신 저장하라고 하더군요.