Passa al contenuto principale

7 Response (Risposta)

7 Response (Risposta)

Si applica [H6], salvo che HTTP-Version è sostituito da RTSP-Version. Inoltre RTSP definisce codici di stato aggiuntivi e non definisce alcuni codici HTTP. I codici di risposta validi e i metodi con cui possono essere usati sono definiti nella tabella 1.

Dopo aver ricevuto e interpretato un messaggio di richiesta, il destinatario risponde con un messaggio di risposta RTSP.

Response    =     Status-Line         ; Section 7.1
*( general-header ; Section 5
| response-header ; Section 7.1.2
| entity-header ) ; Section 8.1
CRLF
[ message-body ] ; Section 4.3

7.1 Status-Line (Riga di stato)

La prima riga di un messaggio Response è la Status-Line, costituita dalla versione del protocollo seguita da un codice di stato numerico e dalla frase testuale associata al codice di stato, con ogni elemento separato da caratteri SP. Non sono ammessi CR o LF eccetto nella sequenza CRLF finale.

Status-Line =   RTSP-Version SP Status-Code SP Reason-Phrase CRLF

7.1.1 Status Code and Reason Phrase (Codice di stato e frase di motivazione)

L'elemento Status-Code è un codice risultato intero a tre cifre del tentativo di comprendere e soddisfare la richiesta. Questi codici sono completamente definiti nella sezione 11. La Reason-Phrase intende fornire una breve descrizione testuale dello Status-Code. Lo Status-Code è destinato agli automi e la Reason-Phrase all'utente umano. Il client non è tenuto a esaminare o mostrare la Reason-Phrase.

La prima cifra dello Status-Code definisce la classe di risposta. Le ultime due cifre non hanno ruolo di categorizzazione. Vi sono 5 valori per la prima cifra:

  • 1xx: Informativo - Richiesta ricevuta, processo in corso

  • 2xx: Successo - L'azione è stata ricevuta, compresa e accettata con successo

  • 3xx: Reindirizzamento - È necessaria un'ulteriore azione per completare la richiesta

  • 4xx: Errore client - La richiesta contiene sintassi errata o non può essere soddisfatta

  • 5xx: Errore server - Il server non è riuscito a soddisfare una richiesta apparentemente valida

I singoli valori dei codici di stato numerici definiti per RTSP/1.0 e un insieme di esempi di Reason-Phrase corrispondenti sono presentati sotto. Le frasi di motivazione qui elencate sono solo raccomandazioni - possono essere sostituite da equivalenti locali senza influire sul protocollo. RTSP adotta la maggior parte dei codici di stato HTTP/1.1 [2] e aggiunge codici specifici RTSP a partire da x50 per evitare conflitti con nuovi codici HTTP definiti.

Status-Code  =     "100"      ; Continue
| "200" ; OK
| "201" ; Created
| "250" ; Low on Storage Space
| "300" ; Multiple Choices
| "301" ; Moved Permanently
| "302" ; Moved Temporarily
| "303" ; See Other
| "304" ; Not Modified
| "305" ; Use Proxy
| "400" ; Bad Request
| "401" ; Unauthorized
| "402" ; Payment Required
| "403" ; Forbidden
| "404" ; Not Found
| "405" ; Method Not Allowed
| "406" ; Not Acceptable
| "407" ; Proxy Authentication Required
| "408" ; Request Time-out
| "410" ; Gone
| "411" ; Length Required
| "412" ; Precondition Failed
| "413" ; Request Entity Too Large
| "414" ; Request-URI Too Large
| "415" ; Unsupported Media Type
| "451" ; Parameter Not Understood
| "452" ; Conference Not Found
| "453" ; Not Enough Bandwidth
| "454" ; Session Not Found
| "455" ; Method Not Valid in This State
| "456" ; Header Field Not Valid for Resource
| "457" ; Invalid Range
| "458" ; Parameter Is Read-Only
| "459" ; Aggregate operation not allowed
| "460" ; Only aggregate operation allowed
| "461" ; Unsupported transport
| "462" ; Destination unreachable
| "500" ; Internal Server Error
| "501" ; Not Implemented
| "502" ; Bad Gateway
| "503" ; Service Unavailable
| "504" ; Gateway Time-out
| "505" ; RTSP Version not supported
| "551" ; Option not supported
| extension-code

extension-code = 3DIGIT

Reason-Phrase = *<TEXT, excluding CR, LF>

I codici di stato RTSP sono estensibili. Le applicazioni RTSP non sono tenute a capire il significato di tutti i codici registrati, benché sia auspicabile. Tuttavia le applicazioni MUST comprendere la classe di ogni codice di stato, indicata dalla prima cifra, e trattare ogni risposta non riconosciuta come equivalente al codice x00 di quella classe, con l'eccezione che una risposta non riconosciuta MUST NOT essere memorizzata nella cache. Ad esempio, se il client riceve uno status 431 non riconosciuto, può assumere in sicurezza che c'era un problema con la sua richiesta e trattare la risposta come se avesse ricevuto 400. In tali casi, gli user agent SHOULD presentare all'utente l'entità restituita con la risposta, poiché quell'entità probabilmente include informazioni leggibili che spiegano lo status insolito.

Tabella 1: Codici di stato e uso con i metodi RTSP

CodiceFrase di motivazioneMetodo
100Continue (continua)all
200OKall
201Created (creato)RECORD
250Low on Storage Space (poco spazio di archiviazione)RECORD
300Multiple Choices (scelte multiple)all
301Moved Permanently (spostato in modo permanente)all
302Moved Temporarily (spostato temporaneamente)all
303See Other (vedi altro)all
305Use Proxy (usa proxy)all
400Bad Request (richiesta errata)all
401Unauthorized (non autorizzato)all
402Payment Required (pagamento richiesto)all
403Forbidden (vietato)all
404Not Found (non trovato)all
405Method Not Allowed (metodo non consentito)all
406Not Acceptable (non accettabile)all
407Proxy Authentication Required (autenticazione proxy richiesta)all
408Request Timeout (timeout della richiesta)all
410Gone (rimosso)all
411Length Required (lunghezza richiesta)all
412Precondition Failed (precondizione fallita)DESCRIBE, SETUP
413Request Entity Too Large (entità di richiesta troppo grande)all
414Request-URI Too Long (Request-URI troppo lungo)all
415Unsupported Media Type (tipo di media non supportato)all
451Invalid parameter (parametro non valido)SETUP
452Illegal Conference Identifier (identificatore di conferenza illegale)SETUP
453Not Enough Bandwidth (larghezza di banda insufficiente)SETUP
454Session Not Found (sessione non trovata)all
455Method Not Valid In This State (metodo non valido in questo stato)all
456Header Field Not Valid (campo di intestazione non valido)all
457Invalid Range (intervallo non valido)PLAY
458Parameter Is Read-Only (parametro in sola lettura)SET_PARAMETER
459Aggregate Operation Not Allowed (operazione aggregata non consentita)all
460Only Aggregate Operation Allowed (consentita solo operazione aggregata)all
461Unsupported Transport (trasporto non supportato)all
462Destination Unreachable (destinazione irraggiungibile)all
500Internal Server Error (errore interno del server)all
501Not Implemented (non implementato)all
502Bad Gateway (gateway errato)all
503Service Unavailable (servizio non disponibile)all
504Gateway Timeout (timeout del gateway)all
505RTSP Version Not Supported (versione RTSP non supportata)all
551Option not support (opzione non supportata)all

7.1.2 Response Header Fields (Campi di intestazione della risposta)

I campi response-header consentono al destinatario della richiesta di passare informazioni aggiuntive sulla risposta che non possono essere collocate nella Status-Line. Questi campi forniscono informazioni sul server e su ulteriore accesso alla risorsa identificata dal Request-URI.

response-header  =     Location             ; Section 12.25
| Proxy-Authenticate ; Section 12.26
| Public ; Section 12.28
| Retry-After ; Section 12.31
| Server ; Section 12.36
| Vary ; Section 12.42
| WWW-Authenticate ; Section 12.44

I nomi dei campi response-header possono essere estesi in modo affidabile solo in combinazione con un cambiamento della versione del protocollo. Tuttavia nuovi o sperimentali campi di intestazione MAY ricevere la semantica di campi response-header se tutte le parti nella comunicazione li riconoscono come tali. I campi di intestazione non riconosciuti sono trattati come campi entity-header.