PROPFIND

HTTP 메서드

HTTP 메서드 PROPFIND의 사양

PROPFIND 메서드는 리소스에 내부 멤버가 없는 경우 요청-URI로 식별된 리소스에 정의된 속성을 검색하거나 리소스가 내부 멤버 URL이 있는 컬렉션인 경우 요청-URI로 식별된 리소스 및 잠재적으로 그 멤버 리소스에 정의된 속성을 검색합니다. 모든 DAV 호환 리소스는 해당 요소와 함께 사용하도록 정의된 모든 XML 요소와 함께 PROPFIND 메서드 및 propfind XML 요소(섹션 14.20)를 지원해야 합니다.

클라이언트는 값이 "0", "1" 또는 "무한대"인 Depth 헤더를 PROPFIND 요청에 함께 제출해야 합니다. 서버는 WebDAV 호환 리소스에서 "0" 및 "1" 깊이 요청을 지원해야 하며 "무한대" 요청을 지원해야 합니다. 실제로는 이 동작과 관련된 성능 및 보안 문제로 인해 무한 깊이 요청에 대한 지원이 비활성화될 수 있습니다. 서버는 Depth 헤더가 없는 요청을 Depth: 무한대 헤더가 포함된 것처럼 처리해야 합니다.

클라이언트는 요청 메서드 본문에 어떤 정보가 요청되는지 설명하는 propfind XML 요소를 제출할 수 있습니다. 가능합니다:

  • prop 요소 내에 원하는 속성의 이름을 지정하여 특정 속성 값을 요청합니다(여기서 속성 순서는 서버에서 무시될 수 있음).
  • 이 사양에 정의된 속성(최소한)과 죽은 속성에 대한 속성 값을 요청합니다, allprop 요소를 사용하여 (include 요소는 allprop와 함께 사용하여 서버에 다른 방법으로 반환되지 않았을 수 있는 추가 라이브 속성도 포함하도록 지시할 수 있습니다),
  • propname 요소를 사용하여 자원에 정의된 모든 속성의 이름 목록을 요청합니다.

클라이언트는 요청 본문을 제출하지 않을 수도 있습니다. 빈 PROPFIND 요청 본문은 반드시 allprop 요청인 것처럼 처리해야 합니다.

allprop는 모든 라이브 속성에 대한 값을 반환하지 않는다는 점에 유의하세요. WebDAV 서버는 점점 더 많은 비용이 계산되거나 긴 프로퍼티를 가지고 있으며([RFC3253] 및 [RFC3744] 참조), 모든 프로퍼티를 반환하지 않습니다. 대신 WebDAV 클라이언트는 <코드>프로퍼티명 요청을 사용하여 어떤 라이브 프로퍼티가 존재하는지 검색하고 값을 검색할 때 명명된 프로퍼티를 요청할 수 있습니다. 다른 곳에 정의된 라이브 프로퍼티의 경우 해당 정의에서 해당 라이브 프로퍼티가 allprop 요청에서 반환될지 여부를 지정할 수 있습니다.

모든 서버는 다양한 속성 검색 시도의 결과를 설명하는 multistatus XML 요소를 포함하는 콘텐츠 유형 text/xml 또는 application/xml의 응답 반환을 지원해야 합니다.

속성을 검색하는 데 오류가 있는 경우 적절한 오류 결과를 응답에 포함시켜야 합니다. 존재하지 않는 속성 값을 검색하라는 요청은 오류이며 404(찾을 수 없음) 상태 값을 포함하는 response XML 요소로 표시되어야 합니다.

따라서 컬렉션 리소스에 대한 multistatus XML 요소에는 요청된 깊이와 상관없이 컬렉션의 각 멤버 URL에 대한 response XML 요소가 포함되어야 합니다. WebDAV와 호환되지 않는 리소스에 대한 <코드>응답 요소는 포함하지 않아야 합니다. 각 response 요소에는 prop XML 요소의 속성이 정의된 리소스의 URL이 포함된 href 요소가 반드시 포함되어야 합니다. 컬렉션 리소스에 대한 PROPFIND의 결과는 항목 순서가 중요하지 않은 플랫 목록으로 반환됩니다. 리소스에는 지정된 이름의 속성에 대한 값이 하나만 있을 수 있으므로 해당 속성은 PROPFIND 응답에 한 번만 표시될 수 있습니다.

속성은 액세스 제어의 대상이 될 수 있습니다. <코드>모든프로퍼티 및 <코드>프로퍼티이름 요청의 경우 주체가 특정 프로퍼티의 존재 여부를 알 권리가 없는 경우 해당 프로퍼티가 응답에서 자동으로 제외될 수 있습니다.

대부분의 프로퍼티에는 캐시 검증 메커니즘이 없으므로 일부 PROPFIND 결과는 주의해서 캐시될 수 있습니다. 이 방법은 안전하면서도 무력합니다([RFC2616] 섹션 9.1 참조).

HTTP 메서드(PROPFIND)는 인터넷 엔지니어링 태스크포스(IETF) 및 월드와이드웹 컨소시엄(W3C)에 의해 문서 RFC 4918의 섹션 9.1에 명시되어 있습니다.

PROPFIND 메서드에 대한 설명

진행 중인 작업

HTTP 메서드 PROPFIND의 예

Request header:
PROPFIND /data HTTP/1.1
Host: api.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/58.0.3029.110 Safari/537
Depth: 1
Content-Type: text/xml; charset="utf-8"
Accept-Language: de-DE,de;q=0.5
Connection: keep-alive
Response header:
HTTP/1.1 207 Multi-Status
Content-Type: text/xml; charset="utf-8"
Content-Length: 453
Date: Mon, 31 July 2023 14:58:12 GMT
Server: Apache/2.4.7 (Ubuntu)
Cache-Control: no-cache