【问题标题】:simple single HTTP response using netcat as web server on macOS在 macOS 上使用 netcat 作为 Web 服务器的简单单个 HTTP 响应
【发布时间】:2017-03-04 19:10:29
【问题描述】:

我使用的是 macOS 并通过 Homebrew 安装了 netcat

$ brew info netcat
netcat: stable 0.7.1 (bottled)
Utility for managing network connections
http://netcat.sourceforge.net/
/usr/local/Cellar/netcat/0.7.1 (11 files, 104.2K) *
  Poured from bottle on 2016-06-21 at 12:19:18
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/netcat.rb

我只是想让 netcat 响应传入的 curl 请求,但我认为我遇到的问题是 netcat 不知道何时响应。

这里是预计发回的内容,存储在response.txt

HTTP/1.1 200 OK

这是在一个终端 shell 中运行的 netcat 命令:

sudo nc -l -p 80 < response.txt 

这是在另一个终端 shell 中运行的 curl 命令:

curl 127.0.0.1:80

有人可以帮助我了解我需要做什么才能使其按预期工作。

我可以通过使用 netcat 而不是 curl 进行连接来实现此功能,但理想情况下,我希望非 netcat 客户端(例如 curl 或 Web 浏览器)与 localhost:80 建立连接并拥有netcat 响应的第一个实例。

谢谢。

【问题讨论】:

  • nc 中,您不能将-p 标志与-l 标志一起使用。这没有意义,并且会引发错误。这在手册页中有清楚的解释。
  • 改用它对我来说没有问题:sudo nc -l 80 &lt; response.txtcurl 命令接收并输出存储在文件response.txt中的文本
  • @arkascha 感谢您的回复,我现在看到您对于使用 -p 没有任何意义是非常正确的,但是在一个 shell 中尝试 sudo nc -l 80 &lt; response.txt 并在另一个 shell 中尝试 curl -v 127.0.0.1:80对我不起作用。我得到curl: (7) Failed to connect to 127.0.0.1 port 80: Connection refused
  • 同样的作品对我来说没有问题,我只是再次尝试确定。你身边肯定有其他问题。也许是本地防火墙?

标签: http curl webserver netcat


【解决方案1】:

尝试使用 macOS netcat 代替 homebrew,并删除 -p 选项:

sudo /usr/bin/nc -l 80 < response.txt

【讨论】:

  • 我不确定gnu的版本和macOS'之间有什么区别(关于这个特定的例子)?但是,嘿,它奏效了。谢谢:-)
【解决方案2】:

请记住在“response.txt”中包含完整的请求详细信息(响应、标头等)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    相关资源
    最近更新 更多