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 bloccoprop: elenco di proprietà
2. Elementi di risposta:
multistatus: risposta Multi-Statusresponse: risposta per una singola risorsapropstat: 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à | Tipo | Descrizione |
|---|---|---|
creationdate | live | Data di creazione della risorsa |
displayname | live/dead | Nome visualizzato |
getcontentlanguage | live | Lingua del contenuto |
getcontentlength | live | Lunghezza del contenuto |
getcontenttype | live | Tipo di contenuto |
getetag | live | Entity tag |
getlastmodified | live | Ultima modifica |
lockdiscovery | live | Informazioni di scoperta dei blocchi |
resourcetype | live | Tipo di risorsa |
supportedlock | live | Tipi 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 bloccolock-token-submitted: è necessario inviare un token di bloccono-conflicting-lock: nessun blocco in conflittono-external-entities: entità esterne non consentitepreserved-live-properties: proprietà live preservatepropfind-finite-depth: limite di profondità per PROPFIND
17. XML Extensibility in DAV (Estensibilità XML in DAV)
Principi di estensione
- Aggiunta di nuovi elementi: è possibile aggiungere nuovi elementi XML in varie posizioni
- Aggiunta di nuove proprietà: è possibile definire nuove proprietà DAV
- Elementi sconosciuti ignorati: client e server devono ignorare gli elementi che non comprendono
- 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
- Codifica UTF-8: XML usa la codifica UTF-8
- Attributo xml:lang: supporta l'annotazione della lingua
- Valori delle proprietà: possono contenere caratteri Unicode
- 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
- Registrazione dello schema URI DAV: "opaquelocktoken"
- Registrazione di intestazioni HTTP: DAV, Depth, Destination e altre
- Codici di stato HTTP: 207, 422, 423, 424, 507
- 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.