[TIL] HTTP : The Definitive Guide "p439 ~ p447"

시윤·2026년 2월 27일

[TIL] Two Pages Per Day

목록 보기
156/158
post-thumbnail

Chapter 19. Publishing Systems

(해석 또는 이해가 잘못된 부분이 있다면 댓글로 편하게 알려주세요.)


✏️ 요약


Collections and Namespace Management

  • WebDAV는 XML 네임스페이스 파티션을 통해 충돌 없이 정확한 리소스/컬렉션 제어가 가능하다
  • DELETE, MKCOL, COPY, MOVE, PROPFIND 5가지 네임스페이스를 사용한다

The MKCOL Method

  • 클라이언트가 서버의 특정 URL에 컬렉션을 생성하기 위한 메서드
  • PUT, POST 메서드를 오버라이딩하는 경우 요청에 추가적인 데이터나 프로토콜이 필요할 수 있음 + 접근 제어가 어려움 -> MKCOL 메서드를 추가하기로 결정
  • Request
    MKCOL /publishing HTTP/1.1
    Host: minstar
    Content-Length: 0
    Connection: Keep-Alive
  • Response
    HTTP/1.1 201 Created
    Server: Microsoft-IIS/5.0
    Date: Fri, 10 May 2002 23:20:36 GMT
    Location: http://minstar/publishing/
    Content-Length: 0
    • 201 Created : 컬렉션이 성공적으로 생성됨
    • 405 Method Not Allowed : 동일한 컬렉션이 이미 존재함
    • 403 Forbidden : 쓰기 권한(컬렉션 생성 권한)이 없음
    • 409 Conflict : 컬렉션을 생성할 상위 컬렉션이 존재하지 않음

The DELETE Method

  • 컬렉션을 삭제하기 위한 메서드 -> 기존의 DELETE 메서드를 의미적으로 확장하여 사용
  • 주요 요청/응답 헤더
    • Depth : 삭제할 컬렉션의 깊이 (설정되지 않으면 무한으로 간주)
    • Content-Location : 삭제된 컬렉션의 URL
  • Request
    DELETE /publishing HTTP/1.0
    Host: minstar
  • Response
    HTTP/1.1 200 OK
    Server: Microsoft-IIS/5.0
    Date: Tue, 14 May 2002 16:41:44 GMT
    Content-Location: http://minstar/publishing/
    Content-Type: text/xml
    Content-Length: 0

The COPY and MOVE Methods

  • 요청 URL를 Source URL, Destination 헤더 값을 타겟 URL로 사용
  • 주요 요청/응답 헤더
    • Depth : 컬렉션의 깊이 (Depth가 0인 경우 지정된 리소스 하나에만 COPY, MOVE 메서드가 적용되며 infinity가 허용됨)
    • Overwrite : Overwrite가 F인 경우 동일한 리소스가 destination에 존재하면 연산에 실패함
  • COPY : 원본을 destination에 복사
    • 일반적으로는 원본 리소스의 속성도 그대로 복사된다
    • 만약 속성을 그대로 복사하고 싶지 않다면 XML body에 명시할 수 있다
  • MOVE : 원본을 destination에 복사 -> 새로 생성된 URI의 무결성 확인 -> 원본 삭제
  • Request
    {COPY,MOVE} /publishing HTTP/1.1
    Destination: http://minstar/pub-new
    Depth: infinity
    Overwrite: T
    Host: minstar
  • Response
    HTTP/1.1 201 Created
    Server: Microsoft-IIS/5.0
    Date: Wed, 15 May 2002 18:29:53 GMT
    Location: http://minstar.inktomi.com/pub-new/
    Content-Type: text/xml
    Content-Length: 0

Enhanced HTTP/1.1 Methods

  • WebDAV는 DELETE, PUT, OPTIONS 메서드를 일부 수정함

The PUT Method

  • 저자가 자신의 콘텐츠를 공유된 사이트로 전송하기 위한 메서드
  • WebDAV는 PUT Method가 locking을 지원하도록 수정
  • Request
    PUT /ch-publish.fm HTTP/1.1
    Accept: */*
    If:<http://minstar/index.htm>(<opaquelocktoken:********>)
    User-Agent: DAV Client (C)
    Host: minstar.inktomi.com
    Connection: Keep-Alive
    Cache-Control: no-cache
    Content-Length: 1155
    • If : 리소스에 걸린 락과 일치하는 락 토큰이 명시된 경우 PUT 연산 수행

The OPTIONS Method

  • WebDAV 서버의 수용력을 확인하기 위한 메서드
  • WebDAV 클라이언트가 최초로 전송하는 요청에 주로 사용
  • Request
    OPTIONS /ch-publish.fm HTTP/1.1
    Accept: */*
    Host: minstar.inktomi.com
  • Response
    HTTP/1.1 200 OK
    Server: Microsoft-IIS/5.0
    MS-Author-Via: DAV
    DASL: <DAV:sql>
    DAV: 1, 2
    Public: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, POST, COPY, MOVE, MKCOL,PROPFIND,
    PROPPATCH, LOCK, UNLOCK, SEARCH
    Allow: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, COPY, MOVE, PROPFIND,PROPPATCH,
    SEARCH, LOCK, UNLOCK
  • DAV 헤더 : DAV 호환 클래스에 대한 정보를 제공한다
    • Class 1 compliance : RFC 2518에 명시된 모든 요구사항을 준수하는 서버 -> 만약 리소스가 Class 1을 준수한다면 1을 반환한다
    • Class 2 compliance : Class 1을 준수하면서 LOCK 메서드를 지원하는 서버 (Timeout, Lock-Token 헤더와 그에 상응하는 XML 요소 제공) -> 만약 리소스가 Class 2를 준수한다면 2를 반환한다
  • Public 헤더 : 서버에서 지원하는 모든 메서드를 나열한 헤더
  • Allow 헤더 : Public 헤더의 부분집합, 특정 리소스에 대해 지원하는 모든 메서드를 나열한 헤더
  • DASL 헤더 : SEARCH 메서드에서 사용되는 쿼리문의 유형을 제공하는 헤더
profile
틈틈이 두 페이지씩 원서 읽기

0개의 댓글