使用 method="get" 时提交的表单未对 + 进行编码

问题描述 投票:0回答:1

使用以下表格

<form target="dialogiframe" action="ConfigUpdate.cvx" id="TestForm" 
    name="TestForm" method="get">
    <input name="test" type="text" size="40" value="A Sum 1+2=3"/>
    <input type="submit" value="Set" />
</form>

提交请求的参数编码如下

test=A+Sum+1+2=3

解码后,它给出了错误的值“A Sum 1 2=3”,因为参数中的 + 没有编码(= 也没有编码),并且它被转换为空格。

如果我更改发布方法,则参数将正确编码为

test=A+Sum+1%2B2%3D3

然后正确转换。

我知道我应该使用 POST 并且确实正在浏览我的页面并转换它们,但是我是否在表单定义中遗漏了任何内容以使 GET 正确编码?

使用 IE8 和 FF10 进行测试,页面位于

html forms http http-get
1个回答
3
投票

我相信这是使用 GET 作为表单方法的一个已知问题。一般来说,您应该在表单中使用 POST 方法。

来自:http://www.cs.tut.fi/~jkorpela/forms/methods.html

官方建议说当且仅当表单处理是幂等的时才应该使用“GET”,这通常意味着纯查询表单。一般来说,建议这样做。然而,存在与长 URL 和非 ASCII 字符库相关的问题,即使对于幂等处理,也可能需要使用“POST”。

© www.soinside.com 2019 - 2024. All rights reserved.