Per il nostro servizio REST voglio inviare un ID di richiesta univoco ad ogni risposta; utile per il debug di progetti interni, ma anche per offrire supporto a terze parti che potrebbero utilizzare il servizio in futuro.
Ho deciso che ho bisogno di utilizzare un'intestazione di risposta, poiché non tutte le richieste REST devono comportare un corpo di risposta (spesso API REST di livello inferiore si avvalgono solo di codice di stato e descrizione), ma dovrebbe comunque inviare indietro questo ID richiesta.
Voglio assicurarmi, se possibile, che io usi un HTTP Response Header che improbabile venga rimosso da qualsiasi proxy lungo il percorso.
Questo potrebbe essere molto importante in quanto un gran numero di client saranno probabilmente dispositivi mobili con ciò che è destinato a essere "interessanti" topologie di rete tra loro e i nostri server.
Tuttavia, è probabile che gli stessi servizi vengano commercializzati anche ad altre aziende con i loro firewall / proxy aziendali.
Per questo motivo ho praticamente escluso l'idea di utilizzare un'intestazione di risposta personalizzata a favore di un'intestazione ben nota.
La mia attuale intestazione famosa vincente sarebbe l'intestazione ETag
, ma mentre è quasi giusta, non è abbastanza - perché ETag
è per una risorsa, non una richiesta (es. due richieste separate per la stessa risorsa restituiranno legittimamente lo stesso ETag
). Inoltre, se lo faccio, significherebbe che non posso fare alcun tagging di entità per qualcos'altro.
Qualcuno ha qualche idea migliore?
Aggiorna
L'intestazione di Pragma, a quanto sembra, potrebbe essere utilizzata, ma sto riscontrando problemi di scrittura all'interno dell'Asp.Net WebAPI. Ecco una domanda correlata su SO .