2013-02-25 14 views
19

Quando si invia una richiesta HTTP, IE invia la variabile User-Agent al server. Un valore possibile (come si vede dal debugger di rete):Intestazione richiesta HTTP: variabile UserAgent

User-Agent: Mozilla /5.0 (compatibile MSIE 9.0; Windows NT 6.1; WOW64; Trident/5,0)

La mia domanda: In che modo IE (o qualsiasi altro browser) rileva questa variabile? Lo sto chiedendo perché quando si visitano alcuni siti Web, questa variabile è diversa da quella di altri e vorrei tracciare da dove proviene il cambiamento. 'Impostazioni di compatibilità' è un'opzione, ma penso che ci sia dell'altro.

Qualcuno può spiegare il processo di questa variabile?

+4

Prima di tutto, questa è un'intestazione di richiesta, non una risposta. Significa che proviene dal browser al server, ma non dal sever al browser. Diciamo che ogni browser si identifica con il server. – Rolice

risposta

24

L'agente utente viene visualizzato in un'intestazione di richiesta HTTP, non in una di risposta HTTP. In generale, la richiesta viene inviata dal browser all'applicazione Web. Quindi la variabile user-agent è compilata dal browser. Browser diversi riempiranno questo campo con valori diversi.

Informazioni su come IE trova tali variabili, penso che stiate chiedendo di User-Agent Registry Keys.

È anche possibile sovrascrivere determinati token della stringa utente-agente aggiungendo valori alla seguente chiave di registro.

HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER) 
    SOFTWARE 
     Microsoft 
     Windows 
      CurrentVersion 
       Internet Settings 
        5.0 
        User Agent 
         (default) = "Mozilla/4.0" 
         Compatible = "compatible" 
         Platform = "Windows NT 5.1" 
         Version = "MSIE 6.0" 
         Pre Platform 
          Token = Value 
         Post Platform 
          Token = Value 

Il valore predefinito della chiave User Agent sostituisce i gettoni nome dell'applicazione e l'applicazione di versione riportati nella stringa user-agent. Tenere presente che i primi sette caratteri vengono utilizzati per il nome dell'applicazione e che i caratteri rimanenti specificano il token della versione dell'applicazione.

I valori Compatible, Platform e Version sostituiscono i token corrispondenti nella stringa user-agent.

È possibile aggiungere token aggiuntivi alla stringa di user-agent utilizzando l'Editor del Registro di sistema per creare nuovi valori di stringa sotto la chiave Pre-Platform o la chiave Post-Platform. Il nome del valore dovrebbe essere il token completo; i dati del valore sono ignorati. I token aggiunti alla chiave di pre-piattaforma vengono visualizzati prima del token di piattaforma nella stringa finale utente-agente. I token aggiunti alla chiave Post-Platform appaiono dopo il token di piattaforma nella stringa finale user-agent. Più token nella chiave Pre-Platform o nella chiave Post-Platform vengono visualizzati in un ordine imprevedibile.

+0

Come posso rimuovere Trident/6.0 sullo user agent, ancora non riesco a trovarlo per 2 settimane – user198989

5

La Wikipedia article su User Agent afferma che:

Il formato stringa User-Agent è attualmente specificato dalla sezione 14.43 di RFC 2616 (HTTP/1.1) Il formato della stringa User-Agent in HTTP è un elenco di token del prodotto (parole chiave) con commenti opzionali.

quindi vi consiglio di leggere la RFC 2616 section su di esso:

14,43 User-Agent

La richiesta-header campo User-Agent contiene informazioni sull'agente utente generato la richiesta.Questo è per scopi statistici, il tracciamento delle violazioni del protocollo e il riconoscimento automatico degli agenti utente al fine di personalizzare le risposte per evitare particolari limitazioni di agente
agente. Gli agenti utente DOVREBBE includere questo campo con
richieste. Il campo può contenere più token del prodotto (sezione 3.8) e commenti che identificano l'agente e tutti i sottoprodotti che formano una parte significativa dello agente utente. Per convenzione, i token del prodotto sono elencati in ordine di importanza per identificare l'applicazione .

User-Agent  = "User-Agent" ":" 1*(product | comment) 

Esempio:

User-Agent: CERN-LineMode/2.15 libwww/2.17b3 

La sezione 4.8 sui prodotti pedina indica:

3,8 Gettoni prodotto

gettoni prodotti vengono utilizzati per consentire la comunicazione applicazioni
si identificano per nome e versione del software. La maggior parte dei campi che utilizzano i token prodotto
consentono anche di sottoporre prodotti che costituiscono una parte significativa
dell'applicazione da elencare, separati da uno spazio bianco. Con la convenzione
, i prodotti sono elencati in ordine di importanza
per l'identificazione dell'applicazione.

product   = token ["/" product-version] 
    product-version = token 

Esempi:

User-Agent: CERN-LineMode/2.15 libwww/2.17b3 
    Server: Apache/0.8.4 

gettoni prodotto dovrebbe essere breve e al punto. NON DEVONO essere
utilizzati per pubblicità o altre informazioni non essenziali. Sebbene qualsiasi carattere token potrebbe apparire in un prodotto-versione, questo token DEVE
essere utilizzato solo per un identificativo di versione (cioè versioni successive
stesso prodotto dovrebbe differire soltanto nella porzione di prodotto-versione il valore del prodotto).

Quindi, secondo la RFC 2616, il contenuto degli agenti utente dipende dal browser. Ad esempio, ecco come Mozilla Firefox crea il proprio agente utente: https://developer.mozilla.org/en-US/docs/Gecko_user_agent_string_reference

Problemi correlati