为什么在GET请求中没有按预期构建url?

时间:2014-04-14 18:12:11

标签: web-applications browser httprequest get-request

我在html页面中有以下表格

<form name="input" action="sayHello1.jsp?param1=test1" method="get">
Username: <input type="text" name="user">
<input type="submit" value="Submit">
</form>

我输入值&#34; test&#34;在文本框中提交。

我希望在浏览器中看到提交的网址为

http://localhost:8080/helloWorld/sayHello1.jsp?param1=test1&user=test

但我将网址视为

http://localhost:8080/helloWorld/sayHello1.jsp?user=test 

为什么呢?

2 个答案:

答案 0 :(得分:2)

HTML specification

  

从元素提交者提交表单元素表单时   (通常是一个按钮),可选地设置了脚本提交标志,   用户代理必须执行以下步骤:

     

[...]

     
      
  • 让查询成为使用表格数据集编码的结果   application / x-www-form-urlencoded编码算法,解释为   US-ASCII字符串。

  •   
  • 让目标成为一个新的URL,它等于除此之外的动作   它的组件被查询替换(添加U + 003F QUESTION   如果合适,标记字符(?)。

  •   

基本上,它使用从表单参数生成的新查询字符串替换现有的查询字符串。

您的浏览器遵循规范。

答案 1 :(得分:1)

表单的实现似乎是重写查询字符串(不合并它)。要获得所需的行为,请在表单中添加<input type="hidden" name="param1" value="test1">,并且不要尝试向操作网址添加值。

根据this answer,我们应该期待这种行为。

  

因此,您的浏览器会废弃现有的&#34;?...&#34;您的URI的一部分,并根据您的表单将其替换为新的。