我认为这是一个基本情况。我有一个POST
操作,我想回复403状态并显示错误页面。
def signup(conn, params) do
...
conn
|> Plug.Conn.send_resp(:forbidden, "Forbidden")
|> Plug.Conn.halt()
end
但是,它将返回403,但不会呈现错误页面。相反,它在浏览器中抛出了Failed to load resource: the server responded with a status of 403 ()
,并下载了一个奇怪的signup.dms
文件。
我有一个设计好的403.html.eex
,有人知道如何正确显示吗?
答案 0 :(得分:1)
下载*.dms
文件的原因是我没有为响应设置Content-Type
。
def signup(conn, params) do
...
conn
|> Plug.Conn.update_resp_header("content-type", "text/plain", &(&1 <> "; charset=utf-8"))
|> Plug.Conn.send_resp(:forbidden, "Forbidden")
|> Plug.Conn.halt()
end
答案 1 :(得分:0)
render
之前,您需要halt
模板。看起来可能像这样:
conn
|> put_status(:forbidden)
|> put_view(MyApp.ErrorView)
|> render("403.html")
|> halt()
在这种情况下,您需要创建MyApp.ErrorView
并在403.html.eex
中创建templates/error
。