Home > OS >  Unexpected EOF while trying to send a request from a parsed Raw HTTP request
Unexpected EOF while trying to send a request from a parsed Raw HTTP request

Time:10-08

I'm using golang to parse a raw HTTP request and then send a request to the URL and print the output.

Code:

stra := `GET / HTTP/1.1
Host: google.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36
Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Connection: close`
    r, err := http.ReadRequest(bufio.NewReader(strings.NewReader(stra)))
    if err != nil {
        fmt.Println(err.Error())
        os.Exit(1)
    }
    u, err := url.Parse("https://"   r.Host   r.URL.String())
    if err != nil {
        panic(err)
    }
    req.URL = u
    transport := http.Transport{}
    transport.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
    client := &http.Client{Transport: &transport}
    resp, err := client.Do(req)

Error:

unexpected EOF

Kindly help.

CodePudding user response:

http header must ends with \r\n\r\n, but it seems that \n is ok for http.ReadRequest? the code below really works.

package main

import (
    "bufio"
    "fmt"
    "net/http"
    "os"
    "strings"
)

func main() {
    stra := `GET / HTTP/1.1
Host: google.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36
Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Connection: close

`
    req, err := http.ReadRequest(bufio.NewReader(strings.NewReader(stra)))
    if err != nil {
        fmt.Println(err.Error())
        os.Exit(1)
    }
    fmt.Println(req)
}
  • Related