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

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

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

php小編草莓將為大家介紹如何在Go語言中通過TCP連接發出HTTP請求。在網絡開發中,我們常常需要與其他服務器進行通信,并獲取數據或發送請求。Go語言提供了豐富的標準庫,其中包含了用于創建TCP連接和發送HTTP請求的功能。通過掌握這些技巧,我們可以輕松地在Go語言中實現與其他服務器的通信,實現數據的獲取和發送。接下來,讓我們一起來深入了解這個有趣的主題吧!

問題內容

package main

import (
    "crypto/tls"
    "fmt"
)

func main() {
    conf := &tls.Config{}
    conn, _ := tls.Dial("tcp", "www.google.com:443", conf)
    data := []byte("GET / HTTP1.1\r\nHost: www.google.com\r\n\r\n")
    conn.Write(data)
    buf := make([]byte, 5000)
    conn.Read(buf)
    fmt.Println(string(buf[:]))
}

登錄后復制

我嘗試通過原始 tcp 連接數據發出 http 請求,但收到 400 bad request 的錯誤響應,這是什么問題。

解決方法

數據中有錯誤。

http1.1 應為 http/1.1

我想分享一下我是如何發現這個拼寫錯誤的,希望對其他人有幫助。

當我想要解決一個我不太熟悉的問題時,我做的第一件事就是找出它工作時的樣子。我之前使用過 nc ,所以我先嘗試一下。

這是 nc 手冊頁中的示例:

$ printf "get / http/1.0\r\n\r\n" | nc host.example.com 80

登錄后復制

所以我首先將 host.example.com 替換為 www.google.com

$ printf "get / http/1.0\r\n\r\n" | nc www.google.com 80

登錄后復制

它有效!

然后將 http/1.0 替換為 http/1.1。仍然有效!

然后添加 host 標頭:

$ printf "get / http/1.1\r\nhost: www.google.com\r\n\r\n" | nc www.google.com 80

登錄后復制

有效!

然后復制問題中的字符串:

$ printf "GET / HTTP1.1\r\nHost: www.google.com\r\n\r\n" | nc www.google.com 80

登錄后復制

這次得到了 400 錯誤請求

這是向前邁出的一大步!請求中有問題。通過比較兩個請求很容易發現拼寫錯誤。

最后,修復原始演示中的拼寫錯誤,并運行演示以驗證問題是否已得到解決。完成!

感謝您的閱讀!

分享到:
標簽:Go語言 標準庫
用戶無頭像

網友整理

注冊時間:

網站: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

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