将curl命令转换为netcat?

6
我将尝试把一条curl命令(post)转换为netcat命令。
我已经弄清楚了如何获取/删除像这样的内容:
curl -v http://localhost:1234/232

in netcat:

nc localhost 1234
GET 232
HOST: localhost

但我不知道如何发POST请求。例如:我想要将数值2300保存在路径123中。
curl -v --data "val=2300" http://localhost:1234/123

and in netcat:
nc localhost 1234
POST 123
HOST: localhost

but where do i write my value?

很确定应该是 GET /232,但你的 Web 服务器可能会容忍... - masterxilo
1个回答

6
nc localhost 1234
POST /123 HTTP/1.0
Content-Length: 8
Content-Type: application/x-www-form-urlencoded
\n
val=2300

Content-Length 用于告诉服务器您将要发送多少数据(“val=2300”的字符串长度)。 Content-Type 用于告诉服务器数据的格式(表单编码)。\n 是 HTTP 分隔字符(标题和数据之间的空行)。


啊,太酷了。它起作用了 :D。你能解释一下为什么内容长度是8,类型为application/x-www-form-urlencoded吗?还有为什么我要添加\n? - user3717963
通过编辑帖子添加了一些内容;curl 将自动基于 -d 标志为您设置这些标头; 您可以使用 curl -v 进行检查。 - Hans Z.
最后一个问题: "HOST: localhost" 是必要的吗?我的老师只是给了我代码,我可以不用输入它。但是什么时候我需要添加它? - user3717963
请查看此处的已接受答案:https://dev59.com/sW025IYBdhLWcg3wblg3,并注意HTTP 1.0和HTTP 1.1之间的区别。 - Hans Z.
通常情况下,您应该使用nc -C发送CRLF而不是LF行结束符。我从未见过nc解释\n,你呢? - masterxilo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接