【问题标题】:url-encode body of http requesthttp请求的url编码正文
【发布时间】:2012-11-17 22:55:22
【问题描述】:

有人可以向我解释一下 Url-encode 的实际需要是什么 使用时http请求正文部分发送的数据

      content-type: application/x-www-form-urlencoded

谢谢

【问题讨论】:

    标签: java http servlets urlencode


    【解决方案1】:

    “需要”是指“目的”吗?

    如果您追求紫色 - 它只是告诉服务器预期的结果:URL 编码的键 = 值对。它还允许服务器知道什么是的——比如multipart/form-data! 这允许服务器明确地知道如何读取传入的数据。

    数据作为一个标头发送(这也是它有大小限制的原因)。因此,您肯定要避免使用以下内容:换行符、冒号。除此之外,您肯定希望在数据中转义 =,以免与 key=value 结构混淆。你也想逃避 & 出于同样的原因。 URL 编码可以完成所有这些 - 所以只有设计 HTTP 协议的人才会这样做才有意义!

    【讨论】:

    • 我可以理解为什么 url 结束附加到它的查询字符串必须是 url-encoded ,但是发布数据意味着数据作为消息的正文部分发送,那么为什么要对它进行 url-encoding ?.
    • 数据作为一个标头发送(这也是它有大小限制的原因)。因此,您肯定要避免使用以下内容:换行符、冒号。除此之外,您肯定希望在数据中转义 =,以免与 key=value 结构混淆。你也想逃避 & 出于同样的原因。 URL 编码可以完成所有这些 - 所以只有设计 HTTP 协议的人才会这样做才有意义!
    • @user1800246 - 您应该编辑您的答案以包含您在上面的评论。
    【解决方案2】:

    有多种方式可以在 POST 请求中向服务器发送数据; URL 编码数据只是几种可能的格式之一。

    客户端和服务器必须就 POST 正文中的数据格式达成一致。 URL 表单编码数据因其普遍支持而最容易使用。浏览器本机支持它。每种编程语言都允许您使用熟悉的语法读取 url 编码的 post 参数。

    当然,没有必要使用 url 形式编码。您可以轻松发送 json 或 xml 编码的 POST 正文。只要客户端和服务器同步,你甚至可以创建一个完全不同的编码并使用它。

    【讨论】:

    • 我明白这一点,但我想知道为什么要使用 url-encoding ,它对各种各样的字符进行编码,而我们真正需要编码的唯一字符是 '=' 和 '&' 。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多