代码之家  ›  专栏  ›  技术社区  ›  Maiku Mori

使用chrome的post请求中的额外“uu”参数

  •  2
  • Maiku Mori  · 技术社区  · 15 年前

    当我使用Google Chrome发出Ajax Post请求时,我会得到额外的 空的 服务器端的参数“u”。

    以下是一些背景信息:

    例如,简单:

    >>print sorted(request.POST.keys())
    ['_','my_parameter']
    

    我在谷歌上搜索过,在邮件列表中我发现很少有帖子提到同样的问题,但我找不到答案,为什么会这样。有人使用PHP和Safari报告了相同的问题,所以我认为它与服务器/后端无关。我用火狐测试了同一个页面,但没有得到额外的参数。

    我已经检查了HTTP 1.1规范,找不到任何相关的内容。

    奇怪的是,我以前从未注意过这种行为。

    我还没有编写一个单独的测试来在所有现代浏览器上测试它,不过我想先问一下。我预计同样的问题也会发生在Safari上。


    一个小问题;期望浏览器只发布我所期望的参数是不好的做法,还是有可能浏览器会发布不必要/意外的参数,比如在这种情况下。


    回答

    正如Blixt所指出的,问题在于原型:

    if (params = Object.toQueryString(params)) {
      if (this.method == 'get')
        this.url += (this.url.include('?') ? '&' : '?') + params;
      else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))
        params += '&_=';
    }
    

    发现 it in bug tracker 也。看起来这是在Safari方面修复的,但作为解决方法,它仍然在原型代码中。

    3 回复  |  直到 15 年前
        1
  •  3
  •   Blixt    15 年前

    最有可能的是,空参数来自您的javascript框架。通常,框架会添加一个附加参数(使URL唯一),以防止某些浏览器(换句话说,Internet Explorer)缓存请求。

    我从未体验过任何浏览器自动添加额外的查询参数。

        2
  •  2
  •   mkoeller    15 年前

    请使用 Fiddler ,以跟踪chrome浏览器和服务器之间的HTTP通信。是否在HTTP请求中找到其他参数?

        3
  •  1
  •   Grant Wagner    15 年前

    回答这个问题:

    小问题;坏问题 练习期望浏览器 只发布参数 期待或有机会 浏览器将发布 不必要/意外的参数,如 在这种情况下。

    信任来自不受信任的源的输入是一个坏主意,而Internet上的用户代理是一个不受信任的源。

    您应该假设您可以收到:

    • 期望的参数和期望的值
    • 期望的参数和不期望的值
    • 不期望的参数和不期望的值

    您还应该假设您可能没有收到预期的参数。