当提交一个GET表单时,查询字符串会从动作URL中删除。

14 浏览
0 Comments

当提交一个GET表单时,查询字符串会从动作URL中删除。

考虑这个表单:

 

当提交这个GET表单时,参数a和b会消失。

是否有原因?

有没有避免这种行为的方法?

admin 更改状态以发布 2023年5月23日
0
0 Comments

在HTML5中,这是规定行为。\n请查看\"控件和表单之间的关联-表单提交算法\"。在GET表单到带有查询字符串的 URI的情况下,请查看\"4.10.22.3表单提交算法\"的第17步:\n让目标成为一个新的URL,等于动作,除了其组件被查询替换(如果适当,加上一个U+003F问号字符(?))。\n因此,您的浏览器将破坏现有的URI的\"?...\"部分,并基于您的表单替换为一个新的部分。\n在HTML 4.01中,规范生成无效的URI-大多数浏览器实际上并没有这样做...\n请查看\"表单-处理表单数据\",第四步-即使URI已经包含一个,也将附加一个?

0
0 Comments

隐藏参数不就是为此而存在的吗...?\n

\n我不会指望任何浏览器保留现有查询字符串中的所有信息。\n正如规格说明(RFC1866,第46页;HTML 4.x第17.13.3节)所述:\n如果方法是“get”,并且操作是HTTP URI,则用户代理获取操作的值,将“?”追加到其末尾,然后追加表单数据集,使用“application / x-www-form-urlencoded”内容类型编码。\n也许可以对动作URL进行百分比编码以嵌入问号和参数,然后握住拳头希望所有浏览器都会保留该URL(并验证服务器也理解该URL)。但我永远不会依赖它。\n顺便说一下:对于非隐藏表单字段也不会有任何不同。对于POST操作,操作URL可以包含查询字符串。

0