【发布时间】:2012-11-12 05:50:49
【问题描述】:
根据When to encode space to plus (+) or %20?,当我们在html表单名称或值中有任何空格时,我们的浏览器会将空格编码为“+”,但如果我们有“加号”值(例如文本字段)怎么办?用户故意输入的?我们的网络服务器会误解该符号并将其改回空格吗?我们将如何避免这种情况?
【问题讨论】:
-
抱歉,谁能告诉我谁负责将“+”号改回空格?是由我们(我们的意思是我们应该在 servlet 或 jsp 中处理它)还是 Web 服务器?
-
将 未编码 参数返回给应用程序/servlet 是 Web 堆栈(例如 servlet 容器)的责任。这种解码发生在相对较高的位置,因为参数被解码为键/值对。意外的 double-unencoding 可能导致
%2b->+->(space),这就是为什么它必须只执行一次。 -
@pst 比如我用的是servlet和jsp,通过getParameter("name")会收到已经解码的字符串吧?
-
@GMsoF 我不熟悉 Java Web 框架,但是一个好的框架会为您解码参数。所以是的,我几乎可以肯定,当你调用
getParameter("name")时,你会得到一个解码的字符串。
标签: java html jsp jakarta-ee servlets