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
或 ^Q
或 dc1
。
包含此字符的文件也会出现此现象。
我是这个论坛的新手。这是我的第一个问题。
我有一个 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
或 ^Q
或 dc1
。
包含此字符的文件也会出现此现象。