【问题标题】:How to send response code from python using cgi package如何使用 cgi 包从 python 发送响应代码
【发布时间】:2016-08-03 23:10:55
【问题描述】:

我正在使用 cgi 包在 python 中编写脚本。我需要根据我的代码中的一些检查发送 HTTP/1.1 200 OK\nHTTP/1.1 404 Not Found\n 的响应。如果我打印上面的一行作为我的响应的第一行,我的 apache 服务器会记录一个错误并返回 500 Internal server error 在这种情况下记录的错误消息的相关部分是 ma​​lformed脚本“helo.py”的标头:错误标头:HTTP/1.1 200 OK\n 谁能指导我在这里做错了什么。

【问题讨论】:

    标签: python html apache http cgi


    【解决方案1】:

    您只打印这些行吗?根据CGI spec,必须定义Content-Type

    print "Content-Type: text/html\r\n\r\n";
    

    如果您想发出状态,请使用Status 标头代替(这是 CGI,而不是 HTTP 标头)。

    所以

    print "Status: 404 Not Found\r\n"
    print "Content-Type: text/html\r\n\r\n"
    

    这样就可以了。

    【讨论】:

      【解决方案2】:

      根据 Sergey 的回答,我想补充一点,对于 Python 3,您只需要以下内容:

      print("Status: 404 Not Found")
      print("Content-Type: application/json;charset=utf-8\n")
      

      显示上述方法有效的最小示例

      #!/usr/bin/env python3
      
      print("Status: 404 Not Found")
      print("Content-Type: application/json;charset=utf-8\n")
      print("Hello")
      

      【讨论】:

      • 我使用上面的代码,但我总是得到 200 作为状态。我是否需要启用或导入其他内容才能使其正常工作?因为如果一切顺利,我的代码就可以工作,换句话说,如果我总是可以返回 200 状态和一些 json.dump,那么我的代码就可以工作
      猜你喜欢
      • 2015-04-06
      • 2010-09-30
      • 1970-01-01
      • 2020-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多