2

我已经浏览了 URLEncoder 和 URLDecoder 的 javadocs。然后更加好奇了。将服务器视为 tomcat。在任何 web 应用程序中,每当我们提交表单时,服务器将表单字段转换为 urlencoded 字段,当我们执行 request.getParamter("fieldName") 时。服务器再次使用 URLDecoder 对其进行解码。 那是对的吗?服务器做的还是浏览器做的?类似地,当我们在地址栏中输入任何 url 时会发生同样的事情?当我们需要在 URLEncoder 和 URLDecoder 的帮助下显式编码或解码请求参数时,如果服务器或浏览器这样做?虽然这些是基本问题,但无法清楚地找到这些答案。

4

2 回答 2

1

虽然浏览器确实会在将 URL 传递给 Web 服务器之前对其进行编码,但可能不会一直有浏览器参与。

例如,您的服务器应用程序可能正在进行基于 REST 的调用并在简单的 GET 请求中传递一些数据。然后,如果您不在服务器上对其进行编码,则接收器对其进行解码时可能会出现乱码。

因此,强烈建议始终在将 URL 发送到服务器代码中之前对其进行编码。

于 2012-06-01T12:04:28.393 回答
1

在任何 web 应用程序中,每当我们提交表单时,服务器都会将表单字段转换为 urlencoded 字段,并且当我们执行 request.getParamter("fieldName") 时。

不,浏览器会这样做。

服务器再次使用 URLDecoder 对其进行解码。那是对的吗?

是的。

服务器做的还是浏览器做的?

浏览器。

如果服务器或浏览器在我们需要借助 URLEncoder 和 URLDecoder 显式编码或解码请求参数时这样做?

我不知道那是什么意思,但它仍然是浏览器。如果您从应用程序代码发送请求,则只需对请求参数进行编码。如果您在 servlet 容器中运行,则根本不需要解码它们:它会为您完成。

于 2012-06-01T22:47:57.683 回答