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