日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

在使用golang進行網絡請求時,偶爾會遇到請求重定向的問題。這個問題可能是由于多余的錯誤導致的。php小編西瓜為你解答如何解決這個問題,以確保網絡請求的順利進行。讓我們一起來看看吧!

問題內容

我從 golang 中得到了一個非常奇怪的行為。

我想用發布請求做一些事情,然后重定向請求。
取決于隨機因素……它是否有效。

當它不起作用時,我收到該錯誤:

“http:多余的響應。來自…的WriteHeader調用”

函數越深,重定向起作用的可能性就越小。

據我所知,我只重定向一次(或零次……)
在重定向之前我不會寫入標頭。
在重定向之前我對 writer 所做的唯一一件事就是將其放入地圖中。

我不想在這里復制所有代碼,所以我會總結一下。

處理程序處理 POST 請求,在名為 demand 的映射中傳遞請求數據。

然后解析請求以獲取表單值,并將其保存到 demand
它被發送到通道中。

需求圖從通道傳遞到以下函數:

func answer_login(demand map[string]any) map[string]any {
    writer := demand["writer"].(http.ResponseWriter)
    request := demand["request"].(*http.Request)
    http.Redirect(writer, request, "/", 302) // <- if it is here it works (at95 %)
    // some mundane code (printing stuff, really)
    .
    .
    .
    // http.Redirect(writer, request, "/", 302) // <- if it is here it works (only at 20 %)
    ...

登錄后復制

如果我按下 F5,它最終會正確重定向。
我嘗試簡單地在 writer.Write([]byte("same issues")) 中寫入一些內容,同樣的問題。

我在 Linux 上,嘗試了不同的瀏覽器。

問題:這是一個(已知)錯誤嗎?

有什么解決辦法嗎?

(強制寫入客戶端)

謝謝

解決方法

我終于了解了這個問題并找到了解決方案。
問題:

因此,編寫器請求在與實際處理函數不同作用域的函數中進行處理和重定向。
以及當實際處理函數結束時。某些上下文因素使編寫者請求過期:您無法再重定向或響應該請求。
這是在文檔中寫的:

https://pkg.go.dev/net/http p>

關于它有時起作用的一個可能的解釋是……也許“通道傳輸、處理和重定向”發生得足夠快(有時)并且實際處理程序功能尚未關閉。

在處理數據之前阻止處理程序函數會破壞并行異步處理的目的。
所以我最終將所有內容都嵌套在處理程序函數中。
歡迎聰明的人糾正我或分享關于上下文和 ResponseWriters 的更好的解釋。

分享到:
標簽:作用域
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定