HX-Redirect

此 HTTP 响应头可用于触发客户端重定向到新的 URL,从而完全重新加载整个页面。它使用浏览器重定向到新位置,这在重定向到可能包含不同的 HTML 头内容或脚本的非 htmx 端点时非常有用。

想要更好地控制重定向或想要使用 ajax 请求而不是完全重新加载浏览器,请参阅 HX-Location

3xx 响应代码不会处理响应标头。请参阅 响应头

基本语法

HX-Redirect: /test

这将促使客户端请求 /test,就好像用户手动输入了此 URL 或点击了常规链接一样 <a href="/test">

示例代码

用户点击删除按钮,但未登录,则重定向到登录页:

HTML 前端代码:

<button hx-post="/delete-item/123"
        hx-target="#messages"
        hx-swap="innerHTML">删除</button>

后台代码(Python Flask):

@app.route("/delete-item/<id>", methods=["POST"])
def delete_item(id):
    if not user_logged_in():
        response = make_response("")
        response.headers["HX-Redirect"] = "/login"
        return response

    # 执行删除逻辑
    return "删除成功"