Content-Length nella risposta
Per default GovWay utilizza il Transfer-Encoding: chunked per inoltrare la risposta al client, come previsto dalla specifica HTTP/1.1 (RFC 9112, Section 7.1). In questo modo il gateway non necessita di conoscere la dimensione complessiva del contenuto prima di iniziare a trasmetterlo.
In alcuni scenari può essere necessario che la risposta contenga l’header Content-Length al posto del Transfer-Encoding: chunked. Ad esempio, le API che supportano il recupero parziale delle risorse tramite Range Requests (RFC 9110, Section 14) richiedono la presenza dell’header Content-Length per consentire al client di determinare la dimensione complessiva della risorsa e gestire correttamente le risposte parziali (status 206 Partial Content).
È possibile personalizzare il comportamento di GovWay registrando le seguenti Proprietà sulla singola erogazione o fruizione. Tutte le proprietà sono disabilitate per default e i valori associabili sono “true” o “false”.
connettori.http.contentLength.preserve: se il backend ha restituito un header Content-Length, GovWay lo preserva nella risposta inoltrata al client, a condizione che il contenuto non sia stato modificato da trasformazioni o altre funzionalità del gateway. Se il contenuto è stato modificato, il valore viene ricalcolato automaticamente.
connettori.http.contentLength.preserve.recalculate: come la precedente, ma il valore del Content-Length viene sempre ricalcolato automaticamente, indipendentemente dal fatto che il contenuto sia stato modificato o meno.
connettori.http.contentLength.force: GovWay aggiunge sempre l’header Content-Length nella risposta, indipendentemente dal fatto che il backend lo abbia restituito o meno. Se il contenuto non è stato modificato e il backend ha fornito un Content-Length, viene preservato il valore originale. In caso contrario, il valore viene calcolato automaticamente.
connettori.http.contentLength.force.recalculate: come la precedente, ma il valore del Content-Length viene sempre ricalcolato automaticamente.
Nota
Le proprietà preserve hanno effetto solamente se il backend ha restituito un header Content-Length nella risposta, mentre le proprietà force agiscono sempre. La variante recalculate comporta un costo aggiuntivo in termini di prestazioni poiché richiede il ricalcolo della dimensione effettiva del contenuto.