Durante lo sviluppo può essere necessario visualizzare le intestazioni http che il browser invia al server, direttamente nel documento.

Le intestazioni inviate dal browser sono contenute all’interno della proprietà Request.Headers e possono essere percorse e stampate con un semplice ciclo.

foreach (var key in Request.Headers.AllKeys){
  Response.Write("<p>"+ key + ": " + Request.Headers[key] +"</p>");
}

Il metodo Response.Write() però non è adatto a generare del codice html valido perché il suo output precede il doctype del documento e perciò, per stampare correttamente le intestazioni all’interno del documento, sarebbe opportuno usare un controllo server web.

Visualizzare le intestazioni http del browser

Visualizzare le intestazioni http del browser

Visualizzare le intestazioni http in un controllo repeater

Per prima cosa inserire nel documento un controllo in cui visualizzare i dati della richiesta http del browser. Nell’esempio viene utilizzato un controllo Repeater ma si può scegliere il controllo più adatto alle proprie esigenze.

<asp:Repeater ID="Repeater1" runat="server">
  <HeaderTemplate>
    <h1>Le intestazioni HTTP del browser</h1>
  </HeaderTemplate>
  <ItemTemplate>
    <p><%# Container.DataItem%>'</p>
  </ItemTemplate>
</asp:Repeater>

Come si deduce dal template dei singoli elementi stampati, le intestazioni saranno stampate all’interno di una serie di paragrafi.

Inserire la direttiva using per il namespace Collection, necessario per creare un ArrayList.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections; // Definizione di ArrayList

Creare un ArrayList per le intestazioni e poi, estrarle mediante la proprietà Request.Header, e popolare l’ArrayList con un foreach come quello mostrato.

ArrayList browserHeaders = new ArrayList();
foreach (var key in Request.Headers.AllKeys)
  browserHeaders.Add(key + ": " + Request.Headers[key]);

Al termine del ciclo associare l’ArrayList al controllo Repeater e poi, eseguire il metodo DataBind().

Repeater1.DataSource = browserHeaders;
Repeater1.DataBind();

La collezione Request.ServerVariables

Un altro modo per visualizzare la informazioni presenti nella richiesta del browser è utilizzare la proprietà Request.ServerVariables che restituisce inoltre le variabili ambientali del server web. Per conoscere l’insieme delle informazioni disponibili utilizzare l’oggetto Request.ServerVariables in un ciclo come quello mostrato nell’esempio successivo.

foreach (string var in Request.ServerVariables){
  Response.Write(var + " " + Request[var] + "<br>");
}

Per accedere al singolo valore a cui si è interessati, utilizzare la chiave corrispondente nella collezione Request.ServerVariables, come mostrato dall’esempio.

Response.Write(Request.ServerVariables[“URL”]);

Altre informazioni sono disponibili nel documento HttpRequest.Headers Property.