第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Golang:重定向兩次并導(dǎo)致 http:多次響應(yīng).WriteHeader 調(diào)用

Golang:重定向兩次并導(dǎo)致 http:多次響應(yīng).WriteHeader 調(diào)用

Go
胡子哥哥 2021-12-07 19:36:55
我有一個(gè)非常奇怪的輸出......讓我先發(fā)布我的代碼然后我會(huì)解釋:在我聲明的主要功能下manageMux.HandleFunc("/info", info)首先我登錄并從“/login”重定向到頁(yè)面“/”:func login(w http.ResponseWriter, r *http.Request) {    if r.Method == "GET" {        t, err := template.ParseFiles("manage/login.html")        checkError(err)        t.Execute(w, nil)    } else { //POST        r.ParseForm()        //do some authentications here        http.Redirect(w, r, "/", http.StatusFound)    }}然后我從當(dāng)前頁(yè)面“/”(只有按鈕)重定向到另一個(gè)頁(yè)面“/info”:func manage(w http.ResponseWriter, r *http.Request) {    t, err := template.ParseFiles("manage/manage.html")    checkError(err)    t.Execute(w, nil)    r.ParseForm()    if r.Form["Button"] != nil { //to get only POST actions from buttons        if r.Form["Button"][0] == "Log" {            http.Redirect(w, r, "/info", http.StatusFound)        }     }}最后,我做了一個(gè)模板,想在客戶端展示:const tpl=`stuff inside`type InfoDefault struct {    //stuff inside}func info(w http.ResponseWriter, r *http.Request) {    info := InfoDefault{        //stuff inside    }    t, err := template.New("info").Parse(tpl)    checkError(err)    err = t.Execute(os.Stdout, info)    checkError(err)}現(xiàn)在,奇怪的是,當(dāng)我單擊頁(yè)面“/”上的按鈕時(shí),出現(xiàn)錯(cuò)誤“http:multiple response.WriteHeader 調(diào)用”。同時(shí),我的頁(yè)面底部顯示了一個(gè)名為“found”的鏈接(奇怪?。?,當(dāng)我單擊“found”鏈接時(shí),我將所有解析的模板打印在服務(wù)器端而不是網(wǎng)頁(yè)上。有誰(shuí)知道為什么...?以及如何修復(fù)錯(cuò)誤并在客戶端網(wǎng)頁(yè)上打印內(nèi)容?謝謝?。。?
查看完整描述

2 回答

?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊

正如JimB已經(jīng)指出:你的服務(wù)器會(huì)很困惑,因?yàn)橛信c兩個(gè)寫入相關(guān)的不同狀態(tài)代碼http.ResponseWriter和redirect。你不能同時(shí)做這兩件事。


我實(shí)際上想詳細(xì)說(shuō)明如何將數(shù)據(jù)傳送到下一頁(yè)(假設(shè)您正在重定向)。


Headers 您可以將一些信息寫入請(qǐng)求對(duì)象并在目標(biāo)頁(yè)面上接收它。例子:


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

    w.Header().Set("My-Awesome-Header", "Rocks")

    ...

}

會(huì)話: 據(jù)我所知,您正在談?wù)撛L問(wèn)控制,我認(rèn)為通過(guò)會(huì)話來(lái)保存用戶數(shù)據(jù)更好。示例:您可以使用數(shù)據(jù)庫(kù)或會(huì)話處理程序,如https://github.com/gorilla/sessions。查看此主題:會(huì)話的最佳實(shí)踐(大猩猩/會(huì)話)。


Cookies: 我不確定您使用的是哪種前端,但在 cookie 上存儲(chǔ)非敏感數(shù)據(jù)可能是一種選擇?沒(méi)有什么比這更好的了(示例中它有真正的巧克力餅干 ;-) ):https : //ataxie.gitbooks.io/build-web-application-with-golang/content/en/06.1.html。


查看完整回答
反對(duì) 回復(fù) 2021-12-07
?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊

在您的manage處理程序中,您正在執(zhí)行模板,該模板將寫入http.ResponseWriter并觸發(fā)http.StatusOK(200) 狀態(tài)代碼。之后您無(wú)法重定向,因?yàn)檫@需要發(fā)送不同的響應(yīng)代碼。

如果需要重定向,請(qǐng)?jiān)趫?zhí)行模板之前進(jìn)行。


查看完整回答
反對(duì) 回復(fù) 2021-12-07
  • 2 回答
  • 0 關(guān)注
  • 473 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)