在新的鳳凰應用程序中,Plug.Head
插件默認存在,我對它的重要性很感興趣。爲什麼將HEAD請求轉換爲GET請求很有用?
我覺得official Phoenix guides是一流的,但是這把我關在Routing guide:
Plug.Head - 轉換HEAD請求GET請求,併除去 響應主體
如果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和相應的GET請求回到HEAD一個有缺陷的應用程序邏輯。
感謝您指出連接適配器!儘管引用的評論或者是不準確的,或者我仍然遠離大局,因爲我從「適配器不應該將響應**主體**發送給客戶端」錯過「** body **」一詞。響應獨立於請求方法發送,只有主體從對HEAD的響應中被省略。但是,我可能會誤解適配器是如何工作的。 –
評論是正確的。服務器不應在**響應**中向HEAD **請求**發送主體。 HEAD **請求**本身是否具有主體是無關緊要的。 –