새로운 Phoenix 앱에서는 기본적으로 Plug.Head
플러그가 제공되며 그 의미에 대해 흥미를 느꼈습니다.HEAD 요청을 GET 요청으로 변환하는 것이 유용한 이유는 무엇입니까?
"the HEAD method is identical to GET except that the server MUST NOT send a message body in the response"을 알고 있습니다.
나는 official Phoenix guides는 최고 수준의 생각하지만, 이것은 Routing guide에서 저를 던졌다 :Plug.Head은 - GET 요청하기 HEAD 요청을 변환하는 경우 응답 본문
스트립 HEAD 요청은 신체가 없으면 왜 필요합니까? 내가 잘못된 형식의 요청을 보완하려고했지만 Plug.Head implementation을보고 싶다면 HEAD 메서드를 GET으로 전환하면됩니다.
def call(%Conn{method: "HEAD"} = conn, []), do: %{conn | method: "GET"}
def call(conn, []), do: conn
end
나는이 주제에 발견 할 수 있었다 가장 가까운 일은 question on ServerFault이지만은 Nginx에와 HEAD 요청이 각각 GET 응답 다시 HEAD에 도착하는 변환 될 필요가 손상되는 애플리케이션 로직에 관련이 있었다.
연결 어댑터를 알려 주셔서 감사합니다! 인용 된 댓글이 부정확하거나 큰 그림과 아직까지는 거리가 멀지 만 "어댑터는 응답 ** 본문 **을 클라이언트에게 보내면 안됩니다"라는 단어 ** "body **"를 놓치기 때문에 중요합니다. 응답은 요청 메소드와 독립적으로 전송되며, 본문 만 HEAD에 대한 응답에서 생략됩니다. 그러나 다시 나는 어쩌면 어댑터가 어떻게 작동하는지 오해 할 수도있다. –
의견이 맞습니다. 서버는 HEAD 요청 **에 ** 응답 **으로 본문을 보내면 안됩니다. HEAD ** 요청 ** 자체에 본문이 있는지 여부는 관계가 없습니다. –