代码之家  ›  专栏  ›  技术社区  ›  ZZ Coder

谁在查询参数中添加了“\单下划线”?

  •  64
  • ZZ Coder  · 技术社区  · 14 年前

    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
    

    参数被神秘地添加到请求中。我想找出是谁干的。

    4 回复  |  直到 14 年前
        1
  •  110
  •   Patricia    14 年前

    jQuery添加了这样一个参数来绕过IE的缓存。

    编辑:

    cache: false
    
        3
  •  3
  •   Artefacto    14 年前

    可能是反向代理添加的伪参数,用于强制提供未缓存的内容。

        4
  •  3
  •   jfrobishow    14 年前

    1283458471913是一个unix时间戳,单位为ms,可能是一个bot/proxy,用于确保获得一个新的页面,而不是缓存版本。

    也可以是jQuery,这将导致AJAX请求的nocache属性设置为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 : "");
    }
    
        5
  •  1
  •   themefield Zain Ali    4 年前

    Ajax工具(如jQuery)能够要求浏览器不要缓存请求的结果,因此来自加载的web页面的每个请求都将传递到web服务器并获得最新的响应。

    为了实现这一点,设置 cache 标记为 false _=1234567890 ,附加到请求URL中。当然,数字总是在变化,所以浏览器认为这是一个全新的请求,不会提供任何缓存内容。