英文:
Unexpected EOF while trying to send a request from a parsed Raw HTTP request
问题
我正在使用golang解析原始的HTTP请求,然后发送一个请求到URL并打印输出。
代码:
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)
错误:
unexpected EOF
请帮忙看看。
英文:
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.
答案1
得分: 2
http头部必须以\r\n\r\n
结尾,但是对于http.ReadRequest
来说,似乎\n
也可以。下面的代码确实有效。
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)
}
英文:
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)
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论