Javascript 表单提交中出现的额外查询字符串参数

Javascript 表单提交中出现的额外查询字符串参数,javascript,html,frontend,Javascript,Html,Frontend,我注意到,当从某些站点执行POST请求时,它会传递我的表单数据(正常)和查询字符串中的一些额外参数。这些额外的参数不是来自隐藏的表单输入,看起来有些随机。例如,如果您转到美国航空公司主页并单击搜索按钮,它会发送一个POST请求以/查找航班,带有额外的表单数据键X-6LdxA4pr-uniqueStateKey,X-6LdxA4pr-b,X-6LdxA4pr-c,X-6LdxA4pr-d,和X-6LdxA4pr-a.负责此操作的脚本代码似乎已呈现为不可读,并且位于页面的开头 这怎么可能?我认为表单

我注意到,当从某些站点执行
POST
请求时,它会传递我的表单数据(正常)和查询字符串中的一些额外参数。这些额外的参数不是来自隐藏的表单输入,看起来有些随机。例如,如果您转到美国航空公司主页并单击搜索按钮,它会发送一个
POST请求以/查找航班
,带有额外的表单数据键
X-6LdxA4pr-uniqueStateKey,X-6LdxA4pr-b,X-6LdxA4pr-c,X-6LdxA4pr-d,和X-6LdxA4pr-a.
负责此操作的脚本代码似乎已呈现为不可读,并且位于页面的开头


这怎么可能?我认为表单数据只在提交时从表单元素生成。我试图找到详细说明如何生成查询字符串的文档,但没有任何东西可以解释这些额外的参数。它们似乎是本地生成的,因为在按下按钮和POST请求之间没有请求

这些附加参数很可能是从页面的Javascript生成的。我认为这些密钥用于安全性或作为会话的唯一标识符。如果没有访问源代码,很难说

脚本不可读的原因可能是因为它被模糊化和缩小(更多信息)

编辑:处理注释的伪代码:

form.onsubmit = function(event) {
    event.preventDefault(); //stop the form submission that would send a post request with just form data.
    const firstname = form.getElementById("FirstName").value;
    const lastname = form.getElementById("LastName").value;
    //...etc

    let security_token = {
        'X-6LdxA4pr': foo,
        'X-6:dxA4pr-a': bar,
        //...etc
        }
    let request = new HTTPPostRequest({ //fake class name
        firstname,
        lastname,
        ...security_token
    }) 
    request.submit(); // send the POST request
}


我同意,它们可能是为了安全或某种标识符。但我想弄清楚的是,尽管它们不是表单的一部分,但它们是如何被插入表单数据的。我不关心这些特定的密钥/值是如何生成的,但一般来说,如何以这种秘密的方式添加参数。我添加了一些伪代码来解释它-基本上网页阻止表单提交,从表单收集数据,将附加值添加到请求,然后提交。@trashcan\u maan去检查AA的表单元素,它附加了一个js处理程序:onsubmit=“submitSearch(getCurrentSearch())”。现在,您可以搜索他们附加的大量js文件,以跟踪这些方法,从而了解整个情况。@TravisActon非常奇怪,onsubmit处理程序实际上与这些额外的参数没有任何关系。我制作了一个精简版的页面来测试它,移除处理程序并不能阻止它添加键。在定义函数的页面上,它看起来只是将结果缓存在列表中,以便您可以在以后快速填写表单。