Passa al contenuto principale

RFC 4918: riepilogo tecnico dei capitoli 11-25

Questo documento riassume i contenuti tecnici principali dei capitoli 11-25 di RFC 4918, incluse le estensioni dei codici di stato, le definizioni XML, i requisiti di conformità e altri aspetti implementativi.


11. Status Code Extensions (Estensioni dei codici di stato HTTP/1.1)

WebDAV introduce cinque nuovi codici di stato HTTP:

11.1 207 Multi-Status

Uso: risposta composta per operazioni in blocco
Scenario: PROPFIND, PROPPATCH, COPY, MOVE, DELETE

Esempio:

HTTP/1.1 207 Multi-Status
Content-Type: application/xml

<D:multistatus xmlns:D="DAV:">
<D:response>
<D:href>/resource1</D:href>
<D:status>HTTP/1.1 200 OK</D:status>
</D:response>
<D:response>
<D:href>/resource2</D:href>
<D:status>HTTP/1.1 403 Forbidden</D:status>
</D:response>
</D:multistatus>

11.2 422 Unprocessable Entity

Significato: la richiesta è sintatticamente corretta ma semanticamente errata
Scenario: XML ben formato che viola regole applicative o semantiche

11.3 423 Locked

Significato: la risorsa di destinazione è bloccata
Scenario: tentativo di modificare una risorsa bloccata

11.4 424 Failed Dependency

Significato: l'operazione corrente non può essere eseguita perché un'operazione precedente è fallita
Scenario: dipendenza fallita in un'operazione in blocco

11.5 507 Insufficient Storage

Significato: lo spazio di archiviazione del server è insufficiente
Scenario: impossibilità di memorizzare la risorsa o completare l'operazione


12. Use of HTTP Status Codes (Uso dei codici di stato HTTP)

12.1 412 Precondition Failed

In WebDAV viene usato quando:

  • una condizione dell'intestazione If non è soddisfatta
  • Overwrite: F è presente ma la risorsa di destinazione esiste
  • la verifica del token di blocco fallisce

12.2 414 Request-URI Too Long

Restituito quando l'URI è troppo lungo e supera il limite del server.


13. Multi-Status Response (Risposta Multi-Status)

Concetto principale

Una risposta Multi-Status consente al server di restituire informazioni di stato per più risorse.

Struttura:

<multistatus>
<response>*
<responsedescription>?
</multistatus>

13.1 Intestazioni di risposta

  • Content-Type: application/xml
  • Può contenere l'intestazione Location per risorse create

13.2 Gestione delle risorse figlie reindirizzate

Il server dovrebbe seguire i reindirizzamenti e riportare lo stato della risorsa finale.

13.3 Codici di stato interni

I codici di stato in una risposta Multi-Status possono essere qualsiasi codice di stato HTTP valido.


14. XML Element Definitions (Definizioni degli elementi XML)

WebDAV definisce un vocabolario XML completo, che include:

Categorie principali di elementi

1. Elementi di richiesta:

  • propfind: richiesta di ricerca delle proprietà
  • propertyupdate: richiesta di aggiornamento delle proprietà
  • lockinfo: informazioni sul blocco
  • prop: elenco di proprietà

2. Elementi di risposta:

  • multistatus: risposta Multi-Status
  • response: risposta per una singola risorsa
  • propstat: stato delle proprietà

3. Elementi di proprietà:

  • vedere il Capitolo 15 per i dettagli

4. Elementi di errore:

  • vedere il Capitolo 16 per i dettagli

15. DAV Properties (Proprietà DAV)

WebDAV definisce un insieme standard di proprietà, suddivise in proprietà live e proprietà dead.

Proprietà live principali

Nome proprietàTipoDescrizione
creationdateliveData di creazione della risorsa
displaynamelive/deadNome visualizzato
getcontentlanguageliveLingua del contenuto
getcontentlengthliveLunghezza del contenuto
getcontenttypeliveTipo di contenuto
getetagliveEntity tag
getlastmodifiedliveUltima modifica
lockdiscoveryliveInformazioni di scoperta dei blocchi
resourcetypeliveTipo di risorsa
supportedlockliveTipi di blocco supportati

Caratteristiche delle proprietà

  • Proprietà live: calcolate e mantenute dal server
  • Proprietà dead: impostate dal client e memorizzate dal server
  • Proprietà protette: non modificabili tramite PROPPATCH

16. Precondition/Postcondition XML Elements (Elementi XML di precondizione e postcondizione)

Uso

Forniscono informazioni di errore leggibili dalla macchina.

Precondizioni comuni

  • lock-token-matches-request-uri: corrispondenza del token di blocco
  • lock-token-submitted: è necessario inviare un token di blocco
  • no-conflicting-lock: nessun blocco in conflitto
  • no-external-entities: entità esterne non consentite
  • preserved-live-properties: proprietà live preservate
  • propfind-finite-depth: limite di profondità per PROPFIND

17. XML Extensibility in DAV (Estensibilità XML in DAV)

Principi di estensione

  1. Aggiunta di nuovi elementi: è possibile aggiungere nuovi elementi XML in varie posizioni
  2. Aggiunta di nuove proprietà: è possibile definire nuove proprietà DAV
  3. Elementi sconosciuti ignorati: client e server devono ignorare gli elementi che non comprendono
  4. Namespace: gli XML namespace evitano conflitti

Migliori pratiche

  • Usare un proprio namespace per definire estensioni
  • Mantenere la compatibilità all'indietro
  • Documentare il comportamento delle estensioni

18. DAV Compliance Classes (Classi di conformità DAV)

Class 1 (WebDAV di base)

Supporto richiesto:

  • metodi PROPFIND / PROPPATCH
  • metodo MKCOL
  • estensioni GET / HEAD per le collezioni
  • estensioni PUT / DELETE
  • metodi COPY / MOVE
  • intestazione DAV che restituisce "1"
  • tutte le proprietà definite nel Capitolo 15
  • entity tag (ETag)

Class 2 (con blocco)

Include Class 1, più:

  • metodi LOCK / UNLOCK
  • supporto dell'intestazione Timeout
  • supporto dell'intestazione If
  • intestazione Lock-Token
  • intestazione DAV che restituisce "1, 2"

Class 3 (collezioni ordinate)

Include Class 1, più:

  • supporto per collezioni ordinate
  • intestazione DAV che restituisce "1, 3" oppure "1, 2, 3"

19. Internationalization Considerations (Considerazioni sull'internazionalizzazione)

Punti chiave

  1. Codifica UTF-8: XML usa la codifica UTF-8
  2. Attributo xml:lang: supporta l'annotazione della lingua
  3. Valori delle proprietà: possono contenere caratteri Unicode
  4. Codifica degli URL: gestire correttamente gli URL internazionalizzati

20. Security Considerations (Considerazioni sulla sicurezza)

Principali problemi di sicurezza

1. Autenticazione e autorizzazione:

  • usare meccanismi di autenticazione appropriati
  • implementare controllo di accesso granulare
  • proteggere le proprietà sensibili

2. Denial of Service (DoS):

  • limitare le richieste Depth: infinity
  • implementare quote di risorse
  • usare meccanismi di timeout

3. Divulgazione di informazioni:

  • gestire con attenzione i messaggi di errore
  • proteggere i token di blocco
  • applicare controlli di autorizzazione appropriati

4. Sicurezza XML:

  • prevenire attacchi di espansione delle entità XML
  • limitare la dimensione dei documenti XML
  • disabilitare le entità esterne

21. IANA Considerations (Considerazioni IANA)

Elementi registrati

  1. Registrazione dello schema URI DAV: "opaquelocktoken"
  2. Registrazione di intestazioni HTTP: DAV, Depth, Destination e altre
  3. Codici di stato HTTP: 207, 422, 423, 424, 507
  4. Namespace XML: "DAV:"

22-24. Acknowledgements / Contributors / Authors (Ringraziamenti / contributori / autori)

RFC 4918 è il risultato del lavoro congiunto di molti membri della comunità WebDAV. In particolare, si ringraziano:

  • gli autori originali di RFC 2518
  • i membri del gruppo di lavoro WebDAV
  • gli implementatori e gli early adopter per il feedback

25. References (Riferimenti)

25.1 Riferimenti normativi

  • RFC 2119: definizione delle parole chiave
  • RFC 2616: HTTP/1.1
  • RFC 3986: sintassi generica degli URI
  • REC-XML: specifica XML 1.0
  • REC-XML-NAMES: namespace XML

25.2 Riferimenti informativi

  • RFC 2518: WebDAV 1.0, obsoleta da questa specifica
  • RFC 3253: versioning WebDAV
  • RFC 3744: controllo di accesso WebDAV
  • Altri RFC correlati

Sintesi: i Capitoli 11-25 coprono dettagli implementativi, requisiti di conformità, considerazioni di sicurezza e supporto all'internazionalizzazione in WebDAV. Sono essenziali per implementare client o server WebDAV completi. I punti fondamentali includono l'uso corretto dei codici di stato HTTP, l'implementazione dell'estensibilità XML, il rispetto dei requisiti di conformità e la gestione dei problemi di sicurezza.