使用以下表格
<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 进行测试,页面位于
我相信这是使用 GET 作为表单方法的一个已知问题。一般来说,您应该在表单中使用 POST 方法。
来自:http://www.cs.tut.fi/~jkorpela/forms/methods.html
官方建议说当且仅当表单处理是幂等的时才应该使用“GET”,这通常意味着纯查询表单。一般来说,建议这样做。然而,存在与长 URL 和非 ASCII 字符库相关的问题,即使对于幂等处理,也可能需要使用“POST”。