nginx + fcgiwrapper sporadic Prblem:提供application / octet-stream而不是text / plain

时间:2015-05-27 14:33:40

标签: http nginx content-type fastcgi plaintext

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

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

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

用C编写的另一个程序应该从stdin中读取Text,解析它并根据stdout的输入打印Text,它应该在请求的webbrowser中显示为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)

我发现根据内容的长度,它有时会起作用,有时也不会。 (仅当程序通过Web浏览器启动时才会发生。) 在Firefox中,使用dev-tools,我可以看到Content-type的答案是

application/octet-stream

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

编辑:我已经搜索过类似的问题而没有成功 +所有其他事情都很完美 +这也适用于不同的浏览器(顿悟,lynx,Windows上的Internet Explorer)

1 个答案:

答案 0 :(得分:0)

通过反复试验(使用curl + firefox-dev-tools)我发现,那个角色

  

0×11

结合: Content-type: text/plain
使nginx传递Content-type: application/octet-stream

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