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 참조).
PROPFIND 메서드에 대한 설명
HTTP 메서드 PROPFIND의 예
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
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