HTML태그 문의

   조회 8232   추천 0    

야밤에 문의드립니다.

>.jpg 라는 파일이 있습니다.

img태그로 하자면 <img src="경로명/&gt;.jpg"> 입니다.
파일명을 인코딩이나 다른것으로 변경하지않고 그냥 그대로 링크걸면 화면에 깨진 이미지 나옵니다.
(깨진이미지=브라우져가 이미지를 찾지못했을때 보여주는 일반적인 이미지)

어찌하면 될까요?
#들어간 이미지도 웹페이지의 URL의 #과 혼동되어 파일을 찾지못하고... 음...
이곳 제로보드에서는 특수문자를 전부 치환해버리는 군요... 쩝..

수정버튼 누르니... 특수문자에 대한 제로보드의 버그도 보이네요.
짧은글 일수록 신중하게.
몽몽 2009-09
& 와 ; 는 url  예약문자 (reserved characters) 입니다.

url 인코딩하지 않으면 당연 404 에러나서 이미지 엑박 뜰수 밖에 없죠.


원래는 브라우저에서 GET 요청을 할 때 브라우저에서 인코딩을 수행하지만,
URL 예약문자는 브라우저가 인코딩을 하지 않습니다

url 예약어를 파일명에 쓸려면  %HEXHEX 형태로 hex encoding 이 되야하구요.

예로 &gt;.jpg 는  %26gt%3B.jpg 로 바뀌어야 됩니다.

해결방법은 url 예약문자를 파일명에 쓰지 않는겁니다.

정 써야 된다면 javascript 등으로 별도로 인코딩처리해주는게 있어야 되겠죠.

참고링크

http://www.nicklib.com/bbs/board.php?bo_table=bbs_lecture&wr_id=35&sca=HTTP
옵션 2009-09
+-아이콘이 그누보드같은데 제로보드라고 하시네요 ^^
라인색도 눈에익은 그누꺼고
곽순현 2009-09
답신주신 분들 감사합니다.
오늘도 좋은거 배우고 가네요. 므흣.
임민규 2009-09
해당 문자들은 주소창에서 그대로 쓸 수 있습니다.

http://radiant.x-y.net/&gt;.jpg
(http://radiant.x-y.net/%26gt%3B.jpg 김현호님의 설명에 따른 주소)
http://radiant.x-y.net/<>.jpg

시험삼아 아무거나 이름바꿔봤습니다.

단 \\문자는 안됩니다. 탈출문자거든요.(특수문자의 의미를 날려버리고 문자그대로 입력)

태그를 위한 <>나 기타 다른 특수문자들은 게시판 실행시 저런 문자열로 치환을 하는 함수가 마련되 있습니다.(php는 소스보기가 짜증나서 모르겠고 cgi게시판은 쉽게 찾습니다) 태그에 쓰인 <>와(여기서 태그란 유저가 입력한 거 말고 원래 소스상 존재하는 <>) 유저가 게시물로 입력하는 <>를 분리하기 위해 저렇게 한 번 바꿔두는 것으로 알고 있습니다.

위에 적으신건 만약 파일명을 &gt;.jpg로 적으셨다면 >.jpg로 찾아보시고
반대로 >.jpg로 적으셨다면 &gt;.jpg로 찾아보시면 나오지 않을까 싶네요.

가불가는 사이트마다 다를 듯 합니다...
     
몽몽 2009-09
좀 의아하네요. 흐흐

IE6 , IE8 , FF3 에서  테스트해서 스니퍼로 raw http 패킷 까보니

1. &gt;.jpg      는 GET /&gt;.jpg      HTTP/1.1  로 요청되서 이미지 정상으로 보임
2. %26gt%3B.jpg  는 GET /%26gt%3B.jpg  HTTP/1.1  로 요청되서 이미지 정상으로 보임
3. <>.jpg        는 GET /%3C%3E.jpg    HTTP/1.1  로 요청되서 이미지 정상으로 보임


< , > 는 인코딩되고, & , ; 는 인코딩되지 않는데요.

URL encode 를 정의한 http://www.ietf.org/rfc/rfc1738.txt 에 보면
& , ; 는 url 예약문자이고,  < ,> 는 Unsafe characters 에 해당되어 인코딩이 되어야한다고 정의되어있습니다.

1,3번을 보면 각 브라우저들은  rfc1738 표준에 맞게 정확하게 인코딩여부를 수행합니다.

그런데 그걸로 받아들여서 어떻게 처리할지 여부는 웹서버에서 결정하는 것이니까
요즘 웹서버들은 똑똑해서인지  URL 인코딩되어있지 않은 예약문자이더라도 filesystem charset 에 따라 매칭되는 filename 만 있으면 리턴처리를 해주는 모양입니다.

저도 임민규님 댓글을 보고 테스트해보고 알게되었네요.

아마 trivial(단순,조악) 하게 만들어진 웹서버같은 경우에는 제대로 리턴처리를 못할 것입니다.

결론은 똑똑한 웹서버는 어느 정도는 URL 예약문자가 섞여들어와도 알아서 잘 처리해준다라고 보면 되겠네요.

그렇다라도 &gt;.jpg 와 같은 파일명은 피하는게 좋습니다.
몽몽 2009-09
테스트 하나 더 해보니

서버에 \/\&\;\>.jpg 라는 파일을 만들어놓고  /&gt;>.jpg 로 GET 날려보니

/&gt;%3E.jpg 로 인코딩이 되긴 하는데 웹서버가 이것까진 처리해주지는 못하네요.


QnA
제목Page 4139/5731
2014-05   5268116   정은준1
2015-12   1793112   백메가
2016-07   4411   김준유
2018-01   4039   빠시온
2013-10   24534   빠시온
2016-05   5707   아날로그
2016-06   4265   고궈
2016-06   4195   김윤술
2017-05   3613   초호기
2017-05   7471   Dobi
2017-06   3014   NiteFlite9
2017-06   3894   여주농민76
2017-06   4197   jore
2016-07   4695   이니이니
2016-07   5261   이문영
2017-07   3931   김제연
2018-11   28388   그린
2016-09   4033   perls
2019-03   11831   jore
2016-12   4608   슈퍼스쿠터
2019-04   11750   NiteFlite9
2023-12   1301   무쏘뿔처럼