Passa al contenuto principale

1. Introduzione

HTTP [RFC7230] mescola l'identificazione delle risorse con la loro posizione. In altre parole, gli URI "http://" e "https://" sono utilizzati sia per nominare che per trovare le cose con cui interagire.

In alcuni casi, è desiderabile separare l'identificazione e la posizione in HTTP; mantenendo lo stesso identificatore per una risorsa, ma interagendo con essa in una posizione diversa sulla rete.

Per esempio:

  • Un server di origine potrebbe voler reindirizzare un client su un server diverso quando è sotto carico, o se ha trovato un server in una posizione più locale per il client.
  • Un server di origine potrebbe voler offrire l'accesso alle proprie risorse utilizzando un nuovo protocollo, come HTTP/2 [RFC7540], o uno che utilizza una sicurezza migliorata, come Transport Layer Security (TLS) [RFC5246].
  • Un server di origine potrebbe voler segmentare i propri client in gruppi di capacità, come quelli che supportano Server Name Indication (SNI) (Sezione 3 della [RFC6066]), per scopi operativi.

Questa specifica definisce un nuovo concetto in HTTP, "Servizi Alternativi" (Alternative Services), che consente a un server di origine di nominare mezzi aggiuntivi per interagire con esso sulla rete. Definisce un quadro generale per questo nella Sezione 2, insieme a meccanismi specifici per pubblicizzarne l'esistenza utilizzando i campi di intestazione HTTP (Sezione 3) o i frame HTTP/2 (Sezione 4), oltre a un modo per indicare che è stato utilizzato un servizio alternativo (Sezione 5).

Approva inoltre il codice di stato 421 (Misdirected Request) (Sezione 6) che i server di origine o le loro alternative nominate possono utilizzare per indicare che non sono autorevoli per una data origine, nel caso in cui venga utilizzata la posizione sbagliata.

1.1. Convenzioni di notazione​

Le parole chiave "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", e "OPTIONAL" in questo documento devono essere interpretate come descritto nella [RFC2119].

Questo documento utilizza la BNF aumentata definita nella [RFC5234] e aggiornata dalla [RFC7405] insieme all'estensione "#rule" definita nella Sezione 7 della [RFC7230]. Le regole seguenti sono definite in [RFC5234], [RFC7230] e [RFC7234]:

OWS           = <OWS, see [RFC7230], Section 3.2.3>
delta-seconds = <delta-seconds; see [RFC7234], Section 1.2.1>
port = <port, see [RFC7230], Section 2.7>
quoted-string = <quoted-string, see [RFC7230], Section 3.2.6>
token = <token, see [RFC7230], Section 3.2.6>
uri-host = <uri-host, see [RFC7230], Section 2.7>