커피닉스, 시스템 엔지니어의 쉼터
  HTTP의 GET 길이제한(?)과 MSIE의 에러페이지 작성일 : 2005/09/03 23:30
 
  • 글쓴이 : 좋은진호 ( http://coffeenix.net/ )
  • 조회수 : 12181
     
    제  목 : HTTP의 GET 길이제한(?)과 MSIE의 404 에러페이지
    작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
    작성일 : 2005.9.3(토)

    간혹 웹에서 GET 요청의 길이 제한은 얼마냐 되느냐는 질문을 받는다.
    또한 인터넷익스플로러(이하 MSIE)에서는 서버로 부터 404 에러코드를 받으면
    무조건 브라우저 자체의 에러페이지를 출력한다는 말을 하는 사람도 있다.
    이부분에 대해서 정리해두고자 한다.

    1. HTTP에서 GET method의 길이 제한있나?

    HTTP 1.1 (http://www.w3.org/Protocols/rfc2616/rfc2616.html)에 정의된 method는
    8개가 있으며, URL의 길이 제한에 대한 정의는 없다.

    ---------   -------------------------------------------------
    Method      설명
    ---------   -------------------------------------------------
    GET         요청할 정보를 URI에 의해서
    POST        message-body를 통해 데이터를 전송한다. 클라이언트의 데이터를 서버로 전송
    HEAD        GET과 유사하게 URI에 의해 정보를 요청하나 요청 데이터(message-body)를
                클라이언트로 전송하지 않음.
    OPTIONS     사용가능한 메쏘드에 대한 정보를 보여줌
    PUT         데이터를 서버에 저장하기 위한 용도. 즉, 파일을 업로드 하는데 사용
                실제로는 거의 사용 안함
    DELETE      리소스 삭제 (WebDAV에서 주로 사용)
    TRACE       요청한 URI가 클라이언트로 오는 경로를 보여줌
    CONNECT     proxy 요청
    ---------   -------------------------------------------------

    그럼 왜 길이제한에 대한 얘기가 나왔을까? 바로 MSIE 브라우저 때문이다.
    MSIE를 사용할 경우 URL길이는 2083bytes로 제한되며,
    GET 메쏘드를 사용하는 경우 2048Bytes로 제한된다.

    * http://support.microsoft.com/default.aspx?scid=KB;en-us;q208427

     
    Internet Explorer has a maximum uniform resource locator (URL) length of 2,083 characters, with a maximum path length of 2,048 characters. This limit applies to both POST and GET request URLs.

    If you are using the GET method, you are limited to a maximum of 2,048 characters (minus the number of characters in the actual path, of course).
     



    2. MSIE에서 404 등의 에러페이지에 대해

    Apache 웹서버에는 ErrorDocument 설정(다른 웹서버도 설정 가능)을 통해서
    404, 500, ... 등의 에러코드에 따라 정의된 페이지를 보여 줄 수가 있다.
    그러나 MSIE에서는 이런 설정과 무관하게 브라우저 자체 메시지를 뿌려주는 경우가 있다.
    에러페이지의 내용이 512bytes를 넘지 않으면 자체 페이지를 띄우기 때문이다.

    표시할 내용이 없더라도 페이지내에 <! -- .... --> 등으로 주석 넣어 512bytes 이상만
    되도록 하면 된다.

    * http://support.microsoft.com/default.aspx?scid=kb;en-us;Q294807

     
    Several frequently-seen status codes have "friendly" error messages that Internet Explorer 5.x displays and that effectively mask the actual text message that the server sends. However, these "friendly" error messages are only displayed if the response that is sent to the client is less than a specified threshold. For example, to see the exact text of an HTTP 500 response, the content length must be greater than or equal to 512 bytes.
     


    커피닉스, 시스템 엔지니어의 쉼터 / URL : http://coffeenix.net/board_view.php?bd_code=1167