다음의 'Content-Disposition' 헤더
다음의 'Content-Disposition' 헤더
현재 다음에서 파일 이름에 공백이 들어간 파일(사진 등)을 저장하려고 하면 모질라의 다운로드 창에 공백 앞 글자까지 파일 이름이 나옵니다. 이 원인은 다음에서
Content-Disposition 헤더에 쓴 filename 파라미터의 값을 따옴표로 묶지 않았기 때문입니다. 즉, 1과 같이 해야 하는데, 2와 같이 하고 있습니다.
1.
Content-Disposition: inline; filename="my picture1.jpg"
2.
Content-Disposition: inline; filename=my picture1.jpg
US-ASCII 범위 밖의 글자가 들어가면 좀더 복잡해지는데, 우선 그것은 나중에 얘기하기로 하고, 이 문제라도 고쳤으면 좋겠군요. 다음에 편지할 것입니다.
관련 모질라 "버그"(물론, 모질라 버그가 아니므로 'WONTFIX'입니다)는 다음과 같습니다.
http://bugzilla.mozilla.org/show_bug.cgi?id=221028
Content-Disposition 헤더에 쓴 filename 파라미터의 값을 따옴표로 묶지 않았기 때문입니다. 즉, 1과 같이 해야 하는데, 2와 같이 하고 있습니다.
1.
Content-Disposition: inline; filename="my picture1.jpg"
2.
Content-Disposition: inline; filename=my picture1.jpg
US-ASCII 범위 밖의 글자가 들어가면 좀더 복잡해지는데, 우선 그것은 나중에 얘기하기로 하고, 이 문제라도 고쳤으면 좋겠군요. 다음에 편지할 것입니다.
관련 모질라 "버그"(물론, 모질라 버그가 아니므로 'WONTFIX'입니다)는 다음과 같습니다.
http://bugzilla.mozilla.org/show_bug.cgi?id=221028
-
- 서포터즈
- Posts: 98
- Joined: 2003 11 21 15:18 25
Re: 다음의 'Content-Disposition' 헤더
싸파리에서 '한메일넷'을 쓰면 위쪽에 메뉴가 하나도 안나옵니다. (카페, 메일, ..., 로그아웃)
잘 썼는데 요즘들어 그런 문제가 나타났습니다.
모질라에서는 잘 나오지만 싸파리에서 안되다가 모질라까지 그런 상황을 만들 수도 있기 때문에 ㅠ.ㅠ (미리 울어봅니다)
잘 썼는데 요즘들어 그런 문제가 나타났습니다.
모질라에서는 잘 나오지만 싸파리에서 안되다가 모질라까지 그런 상황을 만들 수도 있기 때문에 ㅠ.ㅠ (미리 울어봅니다)
안녕하세요. 종의 다양함을 생각하며 <인터넷 익스플로러>는 거의 쓰지 않고 다른 웹-브라우저를 쓰는 이 정민*이라고 합니다.
Re: 다음의 'Content-Disposition' 헤더
한메일만 그런가요? 아니면 다음 전체가 그런가요? 얼마전에 다음 오른쪽 상단에 올라가는 miniDaum 스크립트를 바꾼 적이 있는데 표준에 무리가 가는 스크립트들은 아니거든요.
Re: 다음의 'Content-Disposition' 헤더
다음 카페의 자료실이나 앨범 등에서 그런 문제가 있습니다. 지금 보니 문제가 조금 더 심각하군요
예를 들어, <a href=http://cafe.daum.net/wjddmsdla
target=_blank>http://cafe.daum.net/wjddmsdla
</a>
의 기본 앨범에 가서 52번 사진을 한번 다운로드하려고 해 보세요.
몇 가지 방법이 있습니다.
1. 사진에 마우스를 댄 채로 오른쪽 버튼을 눌러서 'save image as'를 고른다.
이 경우 wget 등으로 헤더를 보면 다음과 같습니다.
Content-Type: application/octet-stream
Content-Disposition: inline;filename=정은임 아나운서.jpg
(한글은 EUC-KR로)
여기에는 몇 가지 문제가 있습니다.
a. jpeg 그림인데 C-T에서 application/octet-stream이라고 잘못 써 놓았습니다. 파일을 업로드할 따 사용자로 하여금 파일 형식을 지정하게 하거나 (bugzilla에서 하듯이), 아니라면 확장자와 'file' 명령 (Unix/Linux에서 서버가 돌아간다면)을 써서 C-T를 알아내서 DB에 저장해 두고, 파일을 내보낼 때 이 값을 C-T에 써 줄 필요가 있습니다.
b. 원래 적은 바와 같이 파일 이름에 공백이 들어가는데, C-D 헤더에서 filename을 따옴표로 묶지 않았습니다.
c. C-D 헤더에서 "inline;"과 다음 파라미터 (filename) 사이에 공백이 없습니다. (지금 기억이 가물가물한데, 하나의 공백은 있어야 할 것입니다.)
d. C-D 헤더에서 non-ASCII 글자를 쓸 때에는 RFC 2231을 따라야 합니다. 그런데, 이것을 따르라고 하기가 곤란한 것이 MS IE가 이것을 이해하지 못 합니다. 한국적 현실에서 MS IE를 무시할 수 없으므로, 편법이지만 RFC 2047이라도 따라야 합니다. 그냥 8bit 글자를 내보내서는 안 됩니다. 모질라는 RFC 2231, RFC2047을 모두 다 이해하고 8bit 글자가 오면 그 링크를 걸어 준 페이지의 인코딩으로 해석합니다. [1]
2. C-T가 잘못되어 있기 때문에 사진에 대고 그냥 click하면(그림에 대해 hyperlink가 걸려 있고, target="_blank"로 되어 있습니다.) 새 윈도우가 뜨면서 application/octet-stream type은 모질라가 처리하지 못 한다고 하면서 저장할 것이냐고 물어 봅니다.
3. 그 페이지에 보면 또 '저장하기' 버튼이 있습니다. 그 버튼을 누를 경우 나온느 HTTP 헤더에서 C-D는 마찬가지 문제가 있고, C-T 헤더는 application/download로 되어 있습니다.
4. 그 페이지의 'Down' 단추 오른쪽에 파일 이름 역시 링크인데, 이것도 3과 똑같은 문제가 있습니다.
[1] <a href=http://bugzilla.mozilla.org/show_bug.cgi?id=162765
target=_blank>http://bugzilla.mozilla.org/show_bug.cgi?id=162765
</a>
예를 들어, <a href=http://cafe.daum.net/wjddmsdla
target=_blank>http://cafe.daum.net/wjddmsdla
</a>
의 기본 앨범에 가서 52번 사진을 한번 다운로드하려고 해 보세요.
몇 가지 방법이 있습니다.
1. 사진에 마우스를 댄 채로 오른쪽 버튼을 눌러서 'save image as'를 고른다.
이 경우 wget 등으로 헤더를 보면 다음과 같습니다.
Content-Type: application/octet-stream
Content-Disposition: inline;filename=정은임 아나운서.jpg
(한글은 EUC-KR로)
여기에는 몇 가지 문제가 있습니다.
a. jpeg 그림인데 C-T에서 application/octet-stream이라고 잘못 써 놓았습니다. 파일을 업로드할 따 사용자로 하여금 파일 형식을 지정하게 하거나 (bugzilla에서 하듯이), 아니라면 확장자와 'file' 명령 (Unix/Linux에서 서버가 돌아간다면)을 써서 C-T를 알아내서 DB에 저장해 두고, 파일을 내보낼 때 이 값을 C-T에 써 줄 필요가 있습니다.
b. 원래 적은 바와 같이 파일 이름에 공백이 들어가는데, C-D 헤더에서 filename을 따옴표로 묶지 않았습니다.
c. C-D 헤더에서 "inline;"과 다음 파라미터 (filename) 사이에 공백이 없습니다. (지금 기억이 가물가물한데, 하나의 공백은 있어야 할 것입니다.)
d. C-D 헤더에서 non-ASCII 글자를 쓸 때에는 RFC 2231을 따라야 합니다. 그런데, 이것을 따르라고 하기가 곤란한 것이 MS IE가 이것을 이해하지 못 합니다. 한국적 현실에서 MS IE를 무시할 수 없으므로, 편법이지만 RFC 2047이라도 따라야 합니다. 그냥 8bit 글자를 내보내서는 안 됩니다. 모질라는 RFC 2231, RFC2047을 모두 다 이해하고 8bit 글자가 오면 그 링크를 걸어 준 페이지의 인코딩으로 해석합니다. [1]
2. C-T가 잘못되어 있기 때문에 사진에 대고 그냥 click하면(그림에 대해 hyperlink가 걸려 있고, target="_blank"로 되어 있습니다.) 새 윈도우가 뜨면서 application/octet-stream type은 모질라가 처리하지 못 한다고 하면서 저장할 것이냐고 물어 봅니다.
3. 그 페이지에 보면 또 '저장하기' 버튼이 있습니다. 그 버튼을 누를 경우 나온느 HTTP 헤더에서 C-D는 마찬가지 문제가 있고, C-T 헤더는 application/download로 되어 있습니다.
4. 그 페이지의 'Down' 단추 오른쪽에 파일 이름 역시 링크인데, 이것도 3과 똑같은 문제가 있습니다.
[1] <a href=http://bugzilla.mozilla.org/show_bug.cgi?id=162765
target=_blank>http://bugzilla.mozilla.org/show_bug.cgi?id=162765
</a>
Re: 다음의 'Content-Disposition' 헤더
> 모질라는 RFC 2231, RFC2047을 모두 다 이해하고 8bit 글자가 오면 그 링크를 걸어 준 페이지의 인코딩으로 해석합니다.
아, 그게 아니라 그 페이지의 인코딩으로 해석하기 전에 UTF-8인지 검사해서 UTF-8이면 UTF-8로 처리하고, UTF-8이 아니면 그 링크를 걸어 준 페이지의 인코딩으로 해석합니다. 즉, 무려 4가지 방법을 씁니다.
아, 그게 아니라 그 페이지의 인코딩으로 해석하기 전에 UTF-8인지 검사해서 UTF-8이면 UTF-8로 처리하고, UTF-8이 아니면 그 링크를 걸어 준 페이지의 인코딩으로 해석합니다. 즉, 무려 4가지 방법을 씁니다.
Re: 다음의 'Content-Disposition' 헤더
<a href=http://www.iana.org/assignments/media-t ... plication/
target=_blank>http://www.iana.org/assignments/media-t ... plication/
</a>
에 보면 'download'나 'forced-download' (PHP 매뉴얼에서 사람들이 추천하는. 이것은 순전히 MS IE에서만 제대로 동작할 텐데...)는 없습니다. 'application/download'나 'application/forced-download'를 C-T에서 지정해서 C-D에서 지정해야 할 처리 방법 (attachment나 inline이냐)을 C-T로 지정하는 편법을 PHP 매뉴얼 등에서 가르치고 있군요.
이렇게 할 경우 정작 진짜 Content-Type에 대한 정보는 HTTP 헤더를 통해 전달되지 않습니다.
MS IE가 C-D의 attachment나 inline을 검사하지 않는 것이 문제가 된다면 browser sniffing이라도 해서 MS IE의 경우에만 비표준 application/download를 쓰고, 다른 브라우저의 경우에는 제대로 된 C-T 헤더를 내보내도록 고쳐 주시기 바랍니다.
target=_blank>http://www.iana.org/assignments/media-t ... plication/
</a>
에 보면 'download'나 'forced-download' (PHP 매뉴얼에서 사람들이 추천하는. 이것은 순전히 MS IE에서만 제대로 동작할 텐데...)는 없습니다. 'application/download'나 'application/forced-download'를 C-T에서 지정해서 C-D에서 지정해야 할 처리 방법 (attachment나 inline이냐)을 C-T로 지정하는 편법을 PHP 매뉴얼 등에서 가르치고 있군요.
이렇게 할 경우 정작 진짜 Content-Type에 대한 정보는 HTTP 헤더를 통해 전달되지 않습니다.
MS IE가 C-D의 attachment나 inline을 검사하지 않는 것이 문제가 된다면 browser sniffing이라도 해서 MS IE의 경우에만 비표준 application/download를 쓰고, 다른 브라우저의 경우에는 제대로 된 C-T 헤더를 내보내도록 고쳐 주시기 바랍니다.
- Channy
- 해커
- Posts: 1006
- Joined: 2002 03 26 17:41 59
- Location: 아름다운 제주
- Contact:
-
- 서포터즈
- Posts: 56
- Joined: 2004 08 15 17:16 58
웹 관련 회사의 사원 컴퓨터에 IE/Mozilla(or Firefox)/Opera 이 세 브라우저를 깔도록 하면 안 될까요? (특히 프로그래머와 디자이너의 컴퓨터에..)차니 wrote: 이 문제는 저희 회사 카페팀장께 이미 포워딩을 해 놨습니다만..
아무래도 좀 짜치는(?) 일에 포함되어 있나 봅니다.
최소한 두세가지 구현에서 잘 보이면 다른 구현에서도 잘 보일 가능성이 있습니다.
Mac과 Linux에서 테스트하면 더 좋겠지만 이건 컴퓨터 등의 추가 투자가 필요하니깐 당장은 무리겠죠. lynx/w3m 등의 text browser까지 지원되면 더 좋겠구요.
-
- 해커
- Posts: 1146
- Joined: 2004 01 15 20:06 36
그것도 하나의 방법일 수는 있지만, 그 방식은 아무래도 1997년 분위기가 풍깁니다. 즉, 표준에 대한 관심 없이 "hit and miss" 식으로 해 보고 되면 좋고, 안 되면 고치고.....cdpark wrote: 최소한 두세가지 구현에서 잘 보이면 다른 구현에서도 잘 보일 가능성이 있습니다.
Mac과 Linux에서 테스트하면 더 좋겠지만 이건 컴퓨터 등의 추가 투자가 필요하니깐 당장은 무리겠죠. lynx/w3m 등의 text browser까지 지원되면 더 좋겠구요.
현재는 그때보다 상황이 훨씬 나아졌으므로 (MS IE의 CSS 지원이 너무 미약한 것이 상당한 걸림돌로 작용하기는 하지만) 차니님이 Daum 사내에서 하시고 계시고, KIPA나 KADO 등에서 하듯이 웹의 기본 정신에 대한 마인드 확산, 표준 준수 및 접근성의 중요성에 대한 인식 제고, 교육, 계몽 등을 해야하지 않을까 싶습니다. 물론, 두 개는 병행할 수 있고, 병행해야 합니다. 하지만, 시간이 걸리더라도 '교육과 계몽' (물론, 이에 대한 동기 부여를 하기 위해 '시장'도 쓸 수 있다면?? 쓰고)을 통해 한국 웹에 '변화의 물결' (이대로 두어서는 정말 큰일 나게 생겼습니다)을 일으켜야 합니다.
Who is online
Users browsing this forum: No registered users and 1 guest