1

我正在尝试踏入 Web 开发世界,但我在理解为什么我的基本 hello world 脚本失败时遇到了一些麻烦。我对 python cgi 脚本进行了简单的 AJAX 调用,该脚本返回了一小部分 HTML,但是调用失败并且我收到“内部服务器错误”作为错误消息。这是我的代码:

Python脚本:

#!/usr/local/bin/python

print "Content-Type: text/html\n"
print """\
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
"""

AJAX 调用:

$(function(){
            $('#clickme').click(function(){
                $.ajax({
                    url: "cgi-bin/ajaxpost.cgi",
                    dataType: "html",
                    type: "POST",
                    success: function(response){
                        alert(response);
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown) {
                        alert(errorThrown);
                    }
                });
            });
        });

这是我的服务器错误日志所说的:

CGI ERROR: A system problem prevented your request from being completed., referer: [my test page]
Premature end of script headers: ajaxpost.cgi, referer: [my test page]

我仔细检查了我的服务器,“#!/usr/local/bin/python”是 python 的正确路径。此外,他们说他们没有指定的 cgi-bin 文件夹,任何 cgi 都可以从任何文件夹运行,只要它具有 .cgi 扩展名。编辑:另外,我允许在服务器上执行 .cgi。

我会继续承认我可能需要一个“像我五岁一样解释它”的答案。谢谢!

4

3 回答 3

1

第一行末尾有一个斜杠字符。在三引号内,这是一个字面斜线。去掉它。

于 2013-03-15T19:48:33.600 回答
1

你需要两个 \n 在末尾

打印“内容类型:文本/html\n”

而不仅仅是一个。

尝试:打印“内容类型:文本/html\n\n”

https://httpd.apache.org/docs/2.2/howto/cgi.html#writing

于 2013-03-15T20:00:44.340 回答
1

我只是通过在 WinSCP 中删除服务器上的 .cgi 文件并重新上传它而不是在更新之间覆盖它来让它工作。除此之外,我确保它以文本而不是二进制文件的形式上传。我怀疑这可能是问题所在,因为它可能保留了 Windows 文本文件格式。一个菜鸟的错误,我敢肯定。谢谢您的帮助。

于 2013-03-15T20:48:06.237 回答