>백엔드 개발 >Golang >Go에서 TCP 연결을 통해 http 요청 만들기

Go에서 TCP 연결을 통해 http 요청 만들기

王林
王林앞으로
2024-02-09 12:20:09829검색

Go에서 TCP 연결을 통해 http 요청 만들기

php editor Strawberry는 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 잘못된 요청이라는 오류 응답을 받았습니다. 무엇이 문제인가요?

Solution

데이터에 오류가 있습니다.

http1.1 应为 http/1.1.

저는 다른 사람들에게 도움이 되기를 바라면서 이 철자 오류를 발견한 방법을 공유하고 싶었습니다.

잘 모르는 문제를 해결하고 싶을 때 가장 먼저 하는 일은 그것이 작동했을 때 어떤 모습인지 알아내는 것입니다. nc를 사용해본 적이 있어서 먼저 사용해보겠습니다.

다음은 nc 매뉴얼 페이지의 예입니다.

으아악

그래서 먼저 host.example.com 替换为 www.google.com를 넣었습니다 :

으아악

작동합니다!

그런 다음 http/1.0 替换为 http/1.1를 추가하세요. 여전히 작동합니다!

그런 다음 host 헤더를 추가하세요:

으아악

작동합니다!

그런 다음 질문의 문자열을 복사하세요:

으아악

이번에 알았어요400 错误请求.

이것은 큰 진전입니다! 요청에 문제가 발생했습니다. 두 요청을 비교하면 입력 오류를 쉽게 찾아낼 수 있습니다.

마지막으로 원본 데모의 오타를 수정하고 데모를 실행하여 문제가 해결되었는지 확인하세요. 마치다!

읽어주셔서 감사합니다!

위 내용은 Go에서 TCP 연결을 통해 http 요청 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제