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, vedi [RFC7230], Sezione 3.2.3>
delta-seconds = <delta-seconds; vedi [RFC7234], Sezione 1.2.1>
port = <port, vedi [RFC7230], Sezione 2.7>
quoted-string = <quoted-string, vedi [RFC7230], Sezione 3.2.6>
token = <token, vedi [RFC7230], Sezione 3.2.6>
uri-host = <uri-host, vedi [RFC7230], Sezione 2.7>