我是这个论坛的新成员,这是我的第一个问题。
我已经设置了一个nginx服务器+fcgiwrapper来运行用户请求的程序(没有PHP)。
为了测试,我有一个简单的bash脚本,它显示环境变量并设置两个cookie,第二个bash脚本以text/plain格式打印“Hello World”,另一个bash脚本以text/html格式打印“Hello World”。
另一个用C编写的程序应该从stdin读取文本,解析它并基于输入输出文本到stdout,请求web浏览器应该以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浏览器中,使用开发者工具,我可以看到答案的Content-type。
application/octet-stream
如果我保存它,它会变成一个文本文件,其中包含应该直接在浏览器中显示的文本。
我做错了什么?
编辑:我已经搜索了类似的问题,但没有成功。
+ 所有其他功能都完美无缺。
+ 这也发生在不同的浏览器上(epiphany、lynx、Windows 上的 Internet Explorer)。
default_type text/plain
),错误仍然存在。 但是,如果我查看下载的文档,会发现其中有不应该出现的控制字符:^Q或(iso)DC1
。这可能是问题所在吗? 从nginx.conf中提取:include /etc/nginx/mime.types; #default_type application/octet-stream; default_type text/plain;
或者我需要在mime.types中添加text/plain
? - Cdrmoi