Passa al contenuto principale

11. Querying for Capabilities

11 Querying for Capabilities

OPTIONS è un metodo di richiesta utilizzato per interrogare le capacità di un user agent o di un proxy. È simile a OPTIONS di HTTP/1.1. Il server di destinazione risponde con un 200 (OK) accompagnato da un corpo del messaggio che descrive le sue capacità.

Le richieste OPTIONS consentono di interrogare la capacità di stabilire una chiamata senza stabilire la chiamata. Ad esempio, un user agent client (UAC) può inviare un OPTIONS al user agent server (UAS) di un particolare utente per scoprire estensioni supportate, codec, ecc. Tuttavia, questo approccio non è raccomandato (NOT RECOMMENDED) come controllo di raggiungibilità, poiché le capacità del Session Description Protocol (SDP) possono essere utilizzate anche per verificare la raggiungibilità. Al suo posto, è raccomandato (RECOMMENDED) inviare un INVITE contenente un'offerta e osservare la risposta di errore (o il successo). Il motivo « tra virgolette » è che un UAC non può eseguire l'autenticazione prima di inviare un INVITE, quindi un attaccante potrebbe falsificare facilmente una richiesta OPTIONS per consentire al UAC di interrogare facilmente la presenza del destinatario. Pertanto, il comportamento SIP tradizionale rompe il controllo di raggiungibilità basato su OPTIONS, poiché impone al destinatario l'autenticazione per mantenere la natura peer-to-peer della chiamata.

Le richieste OPTIONS possono essere inviate sia da un UAC a un UAS sia da un UAC a un proxy. (Poiché un UAS è un endpoint che agisce come proxy o server di reindirizzamento, inviare un OPTIONS a un proxy è logicamente equivalente a inviarlo a un UAS.) Tale richiesta PUÒ (MAY) essere utilizzata per interrogare le capacità di qualsiasi endpoint nel dominio identificato dal Request-URI della richiesta (seguendo il comportamento del proxy della sezione 16).

11.1 Costruzione di una richiesta OPTIONS

Una richiesta OPTIONS è creata utilizzando il modello di entità definito in [4], con l'indirizzo di destinazione pari al Request-URI. Nessun campo di intestazione Require o Proxy-Require aggiuntivo può essere incluso in questa richiesta (MUST NOT).

Il campo di intestazione Accept di questa richiesta PUÒ (MAY) specificare un formato che è preferito (SHOULD) a qualsiasi altro mezzo di descrizione delle capacità.

11.2 Elaborazione delle richieste OPTIONS

La ricezione di una richiesta OPTIONS è trattata allo stesso modo della ricezione di una richiesta non-INVITE. Un UAS conforme a questa specifica restituisce una risposta 405 (Method Not Allowed) per qualsiasi metodo ricevuto se la richiesta è altrimenti INVALID. Pertanto, un server che non supporta la capacità del metodo OPTIONS DOVREBBE (SHOULD) restituire 405 (Method Not Allowed) alla ricezione di una richiesta OPTIONS.

11.3 Generazione di una risposta a OPTIONS

La costruzione di una risposta 200 (OK) a una richiesta OPTIONS segue le procedure descritte nella sezione 8.2.6. Il corpo della risposta è opzionale (OPTIONAL). Se il corpo è vuoto, il 200 (OK) include solo i campi di intestazione richiesti (ad eccezione di Contact). I campi di intestazione Allow, Accept, Accept-Encoding, Accept-Language e Supported sono raccomandati (RECOMMENDED) per descrivere le capacità del UAS. Il corpo del messaggio PUÒ (MAY) essere utilizzato per una descrizione più dettagliata delle capacità. Tale corpo può essere in qualsiasi formato appropriato e deve (MUST) essenzialmente fornire informazioni che consentano al destinatario di comprendere le capacità supportate e decidere se utilizzarle.

11.4 Interrogazione di un proxy con OPTIONS

Quando un proxy riceve una richiesta OPTIONS, DOVREBBE (SHOULD) restituire una risposta 200 (OK) che descrive le capacità che supporta. La descrizione delle capacità del proxy DOVREBBE (SHOULD) essere restituita solo per una richiesta OPTIONS il cui Request-URI ha un indirizzo corrispondente al dominio di responsabilità del proxy. Il codice di risposta 501 (Not Implemented) DOVREBBE (SHOULD) essere restituito se il proxy non supporta tale richiesta. In altre parole, quando il core è lato proxy, il proxy elabora la richiesta come per qualsiasi altra richiesta e genera una risposta. Se un proxy riceve la propria richiesta OPTIONS e non può risolverla verso il proprio dominio di responsabilità, DOVREBBE (SHOULD) restituire 404 (Not Found) (se l'URI non può essere risolto). Se un proxy riceve la propria richiesta OPTIONS e può risolverla verso il proprio dominio di responsabilità ma non desidera descrivere le proprie capacità, DOVREBBE (SHOULD) restituire 405 (Method Not Allowed).