如何用netcat做http get?
How to do http get with netcat?
我正在尝试使用 netcat
提交 HTTP GET 请求。但它给了我 505 错误。有人知道我使用 netcat
有什么问题吗?谢谢
$ cat main.sh
#!/usr/bin/env bash
netcat -v httpbin.org 80 <<EOF
GET /get HTTP/1.1
EOF
$ ./main.sh
httpbin.org [23.23.171.5] 80 (http) open
HTTP/1.1 505 HTTP Version Not Supported
Connection: close
Server: Cowboy
Date: Fri, 09 Feb 2018 00:26:37 GMT
Content-Length: 0
您必须使用 CRLF 行结尾,并且您必须包含主机 header。
~$ printf 'GET /get HTTP/1.1\r\nHost:httpbin.org\r\n\r\n' | nc -v httpbin.org 80
HTTP/1.1 200 OK
[…]
这是一个更具可读性的解决方案。
$ sed 's/$/\r/g' <<EOF | netcat -v httpbin.org 80
GET /get HTTP/1.1
Host:httpbin.org
EOF
我正在尝试使用 netcat
提交 HTTP GET 请求。但它给了我 505 错误。有人知道我使用 netcat
有什么问题吗?谢谢
$ cat main.sh
#!/usr/bin/env bash
netcat -v httpbin.org 80 <<EOF
GET /get HTTP/1.1
EOF
$ ./main.sh
httpbin.org [23.23.171.5] 80 (http) open
HTTP/1.1 505 HTTP Version Not Supported
Connection: close
Server: Cowboy
Date: Fri, 09 Feb 2018 00:26:37 GMT
Content-Length: 0
您必须使用 CRLF 行结尾,并且您必须包含主机 header。
~$ printf 'GET /get HTTP/1.1\r\nHost:httpbin.org\r\n\r\n' | nc -v httpbin.org 80
HTTP/1.1 200 OK
[…]
这是一个更具可读性的解决方案。
$ sed 's/$/\r/g' <<EOF | netcat -v httpbin.org 80
GET /get HTTP/1.1
Host:httpbin.org
EOF