加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell – 执行脚本后“netcat -e”重置连接

发布时间:2020-12-15 20:55:06 所属栏目:安全 来源:网络整理
导读:我发现了类似的问题 here,但没有答案. 我写了这个名为answer.sh的脚本: #!/bin/shecho "HTTP/1.1 200 OKHello World" 如果我跑 ./answer.sh | nc -c -l -p 8797 然后浏览到localhost:8797我得到一个只有“Hello World”文本的网页(这正是我想要的). 但如果
我发现了类似的问题 here,但没有答案.

我写了这个名为answer.sh的脚本:

#!/bin/sh

echo "HTTP/1.1 200 OK

Hello World"

如果我跑

./answer.sh | nc -c -l -p 8797

然后浏览到localhost:8797我得到一个只有“Hello World”文本的网页(这正是我想要的).

但如果我跑

nc -l -p 8797 -e ./answer.sh

浏览器说连接中断了.
所以我试试

nc localhost 8797

看看会发生什么,我得到了这个:

HTTP/1.1 200 OK

Hello World
read(net): Connection reset by peer

我想了解正在发生的事情以及(技术上)工作方式与其他方式之间的区别.

提前致谢.

解决方法

看起来这个问题的答案很慢.我不能用nc -e进行测试,所以这不是一个完整的答案,但也许它将有助于开始对话……

我建议在HTTP响应中使用Content-Length:标头,例如

#!/bin/sh

echo "HTTP/1.1 200 OK
Content-Length: 11

Hello World"

用于…时

./answer.sh | nc -l -p 8797

…我发现它允许普通浏览器完成请求.没有它,浏览器不知道何时停止读取响应,并将等待服务器端关闭连接.

当从nc localhost 8797作为客户端连接时,显然这没有区别. nc对HTTP标头不感兴趣,只会继续读取,直到服务器端断开连接.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读