【问题标题】:Proper RESTful response to unsupported protocol (e.g. HTTP/HTTPS)?对不受支持的协议(例如 HTTP/HTTPS)的正确 RESTful 响应?
【发布时间】:2020-12-21 20:30:03
【问题描述】:

我正在编写一个 RESTful API 服务,它只能通过 HTTPS 协议工作。如果请求是通过 HTTP 来的,应该返回什么样的响应码?

【问题讨论】:

    标签: api rest response httpresponse


    【解决方案1】:

    “301 永久移动”,服务器将客户端从 http 重定向到 https。这是最常用的模式,我建议您在服务器级别实现。这取决于您拥有的网络服务器,我猜想您的特定服务器有很多在线指南。 这也将告诉客户端从 HTTP 永久切换到 HTTPS。

    如果问题与方法而不是 HTTP/HTTPS 相关,那么“405 METHOD NOT ALLOWED”将是正确的选择。如果不允许客户端调用方法本身,这就是您应该响应客户端的内容。作为第一步,这会产生误导,因为问题在于 HTTP/HTTPS 协议,而不是客户端使用的方法(Get、Post、Put 等)。

    【讨论】:

      【解决方案2】:

      426 需要升级。这表明应该使用https。

      【讨论】:

      • 如果我错了,请纠正我。但是426表示客户端请求使用了过时的API规范,需要升级到最新版本。与不受支持的协议无关。
      • HTTP 426 表示协议“需要升级”,因此它是 HTTP 规范的一部分(而不是您的 API 本身)。见rfc2616
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-12
      • 2021-04-04
      • 1970-01-01
      • 1970-01-01
      • 2019-08-16
      • 2019-01-09
      • 2019-05-28
      相关资源
      最近更新 更多