亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go 可以輕松模擬 Laravel 的 return Redirect::back() 的行為嗎?

Go 可以輕松模擬 Laravel 的 return Redirect::back() 的行為嗎?

Go
森欄 2022-04-20 17:42:01
在使用Laravel時,我非常感謝能夠使用:return Redirect::back();請求后返回上一個 URL POST。在Go中是否有一種簡單的內置方法可以做到這一點?http.Redirect(w, r, backURL, http.StatusSeeOther)backURL發出 POST 請求的 URL在哪里。我瀏覽net/http并搜索了 SE 和谷歌,但我沒有找到任何東西。如果以一種簡單的方式失敗,我將不勝感激任何指向在Go中執行此操作的慣用方式的指針。
查看完整描述

1 回答

?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

該Redirect::back()函數使用Referer客戶端(瀏覽器)指定的 HTTP 標頭中的 URL。


您可以像 一樣訪問此標頭值r.Header.Get("Referer"),但該http.Request類型還提供了一個Request.Referer()返回此Referer字段值的直接方法,該方法還處理其兩種可能的形式("Referer"和"Referrer")。


這是您可以模仿“返回”行為的方式:


func PostHandler(w http.ResponseWriter, r *http.Request) {

    // Process form, then:

    if rf := r.Referer(); rf != "" {

        http.Redirect(w, r, rf, http.StatusSeeOther)

        return

    }


    // No Referer specified, supply your own response

    // or redirect to a default / home page

    http.Redirect(w, r, "/", http.StatusSeeOther)

}

如果您想從許多處理程序中調用它,您可以在輔助函數中捕獲此功能:


func redirectBack(w http.ResponseWriter, r *http.Request) {

    if rf := r.Referer(); rf != "" {

        http.Redirect(w, r, rf, http.StatusSeeOther)

        return

    }


    // No Referer specified, supply your own response

    // or redirect to a default / home page

    http.Redirect(w, r, "/", http.StatusSeeOther)

}

然后使用它:


func PostHandler(w http.ResponseWriter, r *http.Request) {

    // Process form, then:

    redirectBack(w, r)

}


查看完整回答
反對 回復 2022-04-20
  • 1 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號