2010-09-10 9 views
59

Ho un server PHP in esecuzione su Apache, ho ottenere un sacco di richiesta si presenta come tale,Chi aggiunge "_" Parametro di query Single Underscore?

10.1.1.211 - - [02/Sep/2010:16:14:31 -0400] "GET /request?_=1283458471913&action=get_list HTTP/1.1" 200 547 0 "http://www.example.com/request" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 (.NET CLR 3.5.30729)" 28632 15602 

Il _ parametro è misteriosamente aggiunto alla richiesta. Sto cercando di scoprire chi lo sta facendo.

C'è un NetScaler in esecuzione davanti a Apache.

+0

perché è l'IP '10.1.1.211' che è un IP locale fornito da un router/modem destra? – RobertPitt

+0

@RobertPitt probabilmente l'IP del NetScaler a monte? – jfrobishow

+0

oki mi chiedevo, mai usato NetScaler – RobertPitt

risposta

83

jQuery aggiunge un parametro simile per aggirare il caching di IE.

edit: aggiunge solo per le richieste GET, e solo se la cache opzione è falsa:

cache: false 
+0

Io uso jQuery ma non appare in ogni richiesta. –

+0

Stai usando qualche chiamata ajax dove specifichi l'attributo nocache? Sarà aggiunto solo allora e solo se si tratta di una richiesta GET. Vedere il mio codice qui sotto da jQuery if (s.cache === false && type == "GET") – jfrobishow

+0

Ho solo questa chiamata AJAX sulla mia pagina e imposto l'attributo nocache. Tuttavia, alcune richieste non hanno il parametro. –

3

Probabilmente si tratta di un parametro fittizio aggiunto dal proxy inverso per forzare la pubblicazione di contenuto non memorizzato nella cache.

2

1283458471913 è un timestamp unix in ms, probabilmente un bot/procura fare in modo che ottengono un nuova pagina e non una versione cache.

Potrebbe anche essere jQuery che causerebbe questo per la richiesta AJAX di avere l'attributo nocache impostato su true.

if (s.cache === false && type == "GET") { 
    var ts = now(); 
    // try replacing _= if it is there 

    var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2″); 
    // if nothing was replaced, add timestamp to the end 

    s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : ""); 
}