Python CGI Ajax调用导致内部服务器错误

时间:2013-03-15 19:18:32

标签: python ajax cgi

我正试图进入Web开发世界,我在理解为什么我的基本hello world脚本失败时遇到了一些麻烦。我有一个简单的AJAX调用python cgi脚本返回一小部分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。

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

结尾需要两个\ n

print“Content-Type:text / html \ n”

而不只是一个。

尝试:打印“Content-Type:text / html \ n \ n”

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

答案 2 :(得分:1)

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