我是这个论坛的新手。这是我的第一个问题。
我有一个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)
答案 0 :(得分:0)
通过反复试验(使用curl + firefox-dev-tools)我发现,那个角色
0×11
结合:
Content-type: text/plain
使nginx传递Content-type: application/octet-stream
。
我不知道为什么会发生这种情况,但我发现C程序会产生错误,因为它会打印0x11
或^Q
或dc1
。
包含此字符的文件也会出现这种现象。