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

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

如何從 HTTP 請求處理程序中獲取狀態(tài)代碼

如何從 HTTP 請求處理程序中獲取狀態(tài)代碼

Go
猛跑小豬 2021-10-25 16:25:18
在我的請求處理程序中,我有一個條件語句,我需要在其中獲取 http 狀態(tài)代碼。func PostHandler(w http.ResponseWriter, r *http.Request) {    params := mux.Vars(r)    idStr := params["id"]    // how would I get the 307 status code, to decide whether to redirect or not?    if w.StatusCode != 307 { // does not work, no such field - why not???        http.Redirect(w, r, idStr, 307)    } else {        RenderTemplate()    }}m.HandleFunc("/{id:.*}", PostHandler).Methods("POST") // this is matched first to intercept POST requests with status 307m.HandleFunc("/{id:.*}", MyHandler).Methods("GET", "POST")我做了一個例子來幫助說明這個具體的場景:http://play.golang.org/p/YZgTsVO524我將如何實現(xiàn)這一目標?基本上我使用 307 因為我需要重新發(fā)送我的 POST 值 http.Redirect(w,r, url, code) 目標。Afaik 這似乎是執(zhí)行此操作的最佳方法,但同樣,如果沒有狀態(tài)代碼,我將無法執(zhí)行此操作。附加問題:使用 307 是一個糟糕的解決方案嗎?如果是這樣,什么是更好的選擇?
查看完整描述

2 回答

?
尚方寶劍之說

TA貢獻1788條經(jīng)驗 獲得超4個贊

我理解你想要做什么,但你的問題非常具有誤導(dǎo)性。正如許多人所提到的,您無法訪問先前發(fā)出的響應(yīng)代碼作為重定向的結(jié)果執(zhí)行的請求(不是因為 Go 沒有提供它,而是 HTTP 沒有按照您想要的方式處理您的場景)。原始請求和重定向請求是在您的應(yīng)用程序中兩個不同時間發(fā)生的兩個單獨的 HTTP 請求。這意味著如果全新請求和重定向請求完全相同,您就無法輕松區(qū)分它們。

我的腦海中浮現(xiàn)出以下解決方案:

  1. 發(fā)送 307 響應(yīng)代碼時,您應(yīng)該在Location標頭中提供新的 URI 。您可以選擇不同的 URL 路徑,因此可以將其路由到單獨的處理程序(僅處理重定向的請求)。其他選項是使用相同的路徑,但添加一個參數(shù),例如附加&redirected=1到 URL - 通過解析參數(shù),您可以檢測新的和重定向的請求。

  2. 如果可能,對重定向請求使用 GET 而不是 POST。如果 POST 數(shù)據(jù)對于第二個請求是必不可少的,您需要以某種方式從數(shù)據(jù)庫或您存儲原始 POST 內(nèi)容的任何地方獲取它。根據(jù)我的理解,使用代碼 302 而不是 307 會要求客戶端始終使用 GET 方法進行重定向。然后,您可以使用Request.Method區(qū)分新請求和重定向請求。

  3. 保持應(yīng)用程序中的狀態(tài)并跟蹤已經(jīng)發(fā)布的內(nèi)容。這將需要每個請求的唯一標識符 - 如果您擁有并存儲它,則可以檢查請求是全新的還是之前執(zhí)行過的(假設(shè)重定向)。


查看完整回答
反對 回復(fù) 2021-10-25
?
呼啦一陣風

TA貢獻1802條經(jīng)驗 獲得超6個贊

你的問題是這樣的:

我將如何獲得 307 狀態(tài)代碼,以決定是否重定向

您正在嘗試決定是否需要在 HTTP請求處理程序中重定向。在請求處理程序中,您不會收到狀態(tài)代碼,而是狀態(tài)代碼作為響應(yīng)的一部分發(fā)送。


查看完整回答
反對 回復(fù) 2021-10-25
  • 2 回答
  • 0 關(guān)注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

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