求助:想要输出到浏览器,效果却是下载该程序。

twoyang_0917 2011-10-21 09:07:45
环境是linux下,webserver使用的是thttpd, cgi程序使用c语言。

预期目标为:某连接指向一个cgi程序,点击该连接效果为该cgi会调用execl执行另一个程序,将该程序执行结果输出到浏览器上。

问题为:使用Content-Type:text/plain这个MIME头,在本机通过,用另一台机子测试结果为:chrome浏览器通过,而IE和firefox却是弹出下载该cgi的对话框。
将MIME头改为Content-Type:text/html,都通过,但是html格式会去除多余空格和回车符,所以显示为乱码。

更改cgi权限,加Content-Disposition:inline都试过均无效。当然也可能格式不对什么的。

有知道怎么解决的,碰到过类似情况的,能给出解决方案绕过此bug的,小弟跪谢了,亲哥们。
...全文
202 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
花落花开 2011-10-30
  • 打赏
  • 举报
回复
关于乱码,我的经验是统一使用utf-8
首先,thttpd 启动的时候设置为utf-8
其次,在编写cgi的时候加入charset=“utf-8”
最后在编辑网页以及cgi源文件的时候保存为utf-8格式
twoyang_0917 2011-10-24
  • 打赏
  • 举报
回复
而那个程序是常驻进程的,一直执行,每隔三秒就会打印一些信息,要输出到网页。所以这个输出到文件再读出来处理好像也不太好弄。
twoyang_0917 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 theforever 的回复:]

对执行结果进行转义替换呗,空格用&nbsp;换,回车符用<br/>换。
[/Quote]这个在html中使用<pre>标签就可以使其不除去多余空格和换行符。但是问题是执行另一个程序的结果,它是直接输出到了标准输出上,没法处理的。
  • 打赏
  • 举报
回复
对执行结果进行转义替换呗,空格用 换,回车符用<br/>换。

2,203

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 CGI
社区管理员
  • CGI社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧