在一个新的 Phoenix 应用程序中,该Plug.Head
插件默认存在,我对它的重要性很感兴趣。
我知道“ HEAD 方法与 GET 相同,只是服务器不得在响应中发送消息正文”。
我认为凤凰城的官方指南是一流的,但这让我在路由指南中感到失望:
Plug.Head - 将 HEAD 请求转换为 GET 请求并剥离响应正文
如果 HEAD 请求没有正文,那么为什么需要这样做?我想也许可以控制格式错误的请求,但查看Plug.Head 实现,它只是将 HEAD 方法切换为 GET。
def call(%Conn{method: "HEAD"} = conn, []), do: %{conn | method: "GET"}
def call(conn, []), do: conn
end
我能在这个主题上找到的最接近的东西是关于 ServerFault 的问题,但它与 NGINX 和一个有缺陷的应用程序逻辑有关,其中 HEAD 请求需要转换为 GET 并将相应的 GET 响应返回给 HEAD。