【问题标题】:Can HTTP PUT request have application/x-www-form-urlencoded as the Content-Type?HTTP PUT 请求可以将 application/x-www-form-urlencoded 作为 Content-Type 吗?
【发布时间】:2011-09-12 11:12:31
【问题描述】:

在 HTTP PUT 请求中发送表单数据是否有效?如果你能给我指出一个规范,那就太好了。

我已经阅读了 HTTP 1.1 规范。但我没有发现 PUT 请求是否可以有表单数据。

我正在使用 Java 创建和访问 RESTful Web 服务。 POST 支持 application/x-www-form-urlencoded 作为 Content-Type。

根据规范,我了解到 POST 用于创建新资源(请求 URI 标识的资源的子资源),PUT 用于创建或更新资源。

但我怀疑 PUT 方法是否也可以包含表单数据?我试图根据规范找出是否可以。而且我在 HTTP 1.1 规范中找不到任何相关内容。

【问题讨论】:

    标签: rest http content-type put specifications


    【解决方案1】:

    是的,您可以将 application/x-www-form-urlencoded 与 PUT 一起使用。 HTTP 规范没有限制哪些方法可以与哪些媒体类型一起使用。

    目前正在进行的 Httpbis 规范对 PUT https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-p2-semantics-14#page-18 的讨论进行了显着扩展

    【讨论】:

      【解决方案2】:

      由于PUT method 用于在提供的URI 下存储封闭的entity,并且Content-Type header fieldentity header field,因此使用Content-Type 标头字段是合法的在 PUT 请求中。

      现在剩下的问题是接收服务器是否可以适当地处理此类请求和 Content-Type 信息。在最坏的情况下,它无法处理 Content-Type 标头字段并返回 501 响应:

      实体的接收者不得忽略任何Content-* (例如 Content-Range)它不理解或实现的标头 并且在这种情况下必须返回 501(未实现)响应。

      【讨论】:

        【解决方案3】:

        这是 wc3 的 HTTP 规范

        http://www.w3.org/Protocols/rfc2616/rfc2616.html

        另外,这里是 Content-Type 的页面

        http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17

        然后放

        http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.6

        如果您需要有关 HTTP PUT 的特定语言的帮助,请使用具体信息更新您的问题

        【讨论】:

          猜你喜欢
          • 2019-06-14
          • 2019-02-04
          • 1970-01-01
          • 2019-10-26
          • 2017-09-22
          • 1970-01-01
          • 2013-11-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多