【问题标题】:Why does the method of an HTTP Request accept any word?为什么 HTTP 请求的方法接受任何单词?
【发布时间】:2016-06-03 12:25:27
【问题描述】:

我一直在玩 AJAX 将数据发送到使用 PHP 完成的 API REST。在任何时候,我都决定将ASD 指定为请求方法。然后我允许链接到 API 路由的函数接受 ASD 作为方法,在 PHP 中我已经这样做了:

$incomingData = file_get_contents("php://input");

令我惊讶的是,$incomingData 不为 null,服务器没有抛出任何异常或错误,但 $incomingData 具有预期值。

我很惊讶,因为我已经有几天阅读有关每种请求方法的用法(POSTPUTGETPATCH 等),在这种情况下更合适使用一个或另一个。我发现了很多好的做法和建议,所以我认为方法的类型是很好地与最后提到的值分隔开来。

那是为什么呢?为什么它接受任何词?那么,在特定情况下使用它们有什么意义呢?

【问题讨论】:

    标签: http http-post httprequest


    【解决方案1】:

    最好的来源是RFC 7231 - http metod overview,它已经过时了RFC 2616 on HTTP Method

    HTTP methods can be expanded。还有一个Method Registry

    many already registered 方法不是很常用。通用服务器只能支持 GET 和 HEAD。

    服务器可能会限制某个 URI 支持的方法,但通常您需要为此目的编写代码或配置。当方法受到限制时,如果该方法已知但不受支持,则服务器应该使用 405 进行响应,包括在响应中的 Allow 响应标头中支持的方法列表,如果方法未知,则返回 501。

    【讨论】:

      猜你喜欢
      • 2019-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      相关资源
      最近更新 更多