Who Add "_" Single Underscore Query Parameter?

PhpJavascriptAjaxApacheHttp

Php Problem Overview


I have a PHP server running on Apache, I get lots of request looks like this,

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

The _ parameter is mysteriously added to the request. I am trying to find out who is doing that.

There is a NetScaler running in front of Apache.

Php Solutions


Solution 1 - Php

jQuery adds a parameter like that to get around IE's caching.

edit: it only adds it for get requests, and only if the option cache is false:

cache: false

Solution 2 - Php

Solution 3 - Php

Probably it's a dummy parameter added by the reverse proxy to force non-cached content to be served.

Solution 4 - Php

1283458471913 is a unix timestamp in ms, probably a bot/proxy making sure that they get a fresh page and not a cached version.

Could also be jQuery which would cause this for AJAX request of you have the nocache attribute set to 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 : "");
}

Solution 5 - Php

Ajax tools, like jQuery, is able to ask the browser not to cache the requested result, so every request from the loaded web page will travel to web server and get the newest response.

In order to achieve that, set cache flag as false, then an additional query parameter, like _=1234567890, is appended into the request URL. Of course the number is always changing, so the browser thinks it as a brand-new request and won't provide any cached things.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionZZ CoderView Question on Stackoverflow
Solution 1 - PhpPatriciaView Answer on Stackoverflow
Solution 2 - PhpColin HebertView Answer on Stackoverflow
Solution 3 - PhpArtefactoView Answer on Stackoverflow
Solution 4 - PhpjfrobishowView Answer on Stackoverflow
Solution 5 - PhpthemefieldView Answer on Stackoverflow