nginx + fcgiwrapper 偶发问题:交付 application/octet-stream 而不是 text/plain

nginx + fcgiwrapper sporadic Prblem: Delivers application/octet-stream instead of text/plain

我是这个论坛的新手。这是我的第一个问题。

我有一个 nginx-server + fcgiwrapper 设置为 运行 用户请求的程序(没有 PHP)。

为了测试,我有一个简单的 bash 脚本,它显示环境变量并设置两个 cookie,第二个 bash-脚本将 "Hello World" 打印为 text/plain 和另一个 bash-脚本将 "Hello World" 打印为 text/html.

另一个用 C 编写的程序应该从 stdin 读取文本,解析它并打印基于输入到 stdout 的文本,它应该在请求的网络浏览器中显示为 text/plain。 (请求浏览器需要使用POST)。

然而有时它会将返回的文本显示为 "text/plain"(它应该这样做),但有时浏览器想要下载返回的文本,就好像它是 "application/octet-stream".

但是,如果我在准备好的环境中测试 C 程序

Environment Variables:
CONTENT_LENGTH=30
REQUEST_METHOD=POST
HTTP_COOKIE=NAME=TEST; ID=200

它每次都有效,没有显示错误,并且在开始时打印:

Content-type: text/plain (plus two newlines)

我发现,根据内容的长度,它有时有效,有时无效。 (这仅在通过网络浏览器启动程序时发生。) 在 Firefox 中,使用开发工具,我可以看到答案 Content-type 是

application/octet-stream

如果我保存它,结果是一个文本文件,其中包含应该直接显示在浏览器中的文本。 我做错了什么?

编辑:我已经搜索过类似的问题但没有成功 + 所有其他事情都完美无缺 + 这也会发生在不同的浏览器上(顿悟,lynx,Windows 上的 Internet Explorer)

通过反复试验(使用 curl + firefox-dev-tools)我发现,字符

0x11

结合: Content-type: text/plain
让 nginx 交付 Content-type: application/octet-stream .

我不知道为什么会这样,但我发现 C 程序产生了错误,因为它打印了 0x11^Qdc1。 包含此字符的文件也会出现此现象。