代码之家  ›  专栏  ›  技术社区  ›  Mike Caron

如何从python CGI脚本引发http错误/异常?

  •  4
  • Mike Caron  · 技术社区  · 15 年前

    只需打印适当的标题即可:

    print '''Status: 501 Not Implemented
    Content-type: text/html
    
    '''
    

    这似乎不太管用。

    我有一个非常基本的设置,即IIS7将*.py CGI脚本路由到python25.exe执行。我没有使用任何WSGI或FastCGI。使用“普通”CGI模块: cgitb cgi

    3 回复  |  直到 15 年前
        1
  •  3
  •   Community CDub    8 年前

    这里有人或多或少地问了同样的问题。

    Returning http status codes in Python CGI

    打印状态代码时是否遵循HTTP规范?你能试着只打印状态码而不打印它的描述吗?

    print '''Status:501
    Content-type: text/html
    
    '''
    

    print '''HTTP/1.1 501 Not Implemented
    Content-type: text/html
    
    '''
    

    您能用您的设置进行测试以验证吗?

    从CGI返回状态:

    http://oreilly.com/openbook/cgi/ch03_07.html

    我猜“状态:501未实现”就像你原来的那样是一条路要走。我不知道为什么它不起作用。在打印状态代码之前,是否打印任何非标题内容?

    另一个证实你做得对的来源(参见第6.3.3节):

    http://www.ietf.org/rfc/rfc3875

    编辑1,2,3:扩展答案

        2
  •  3
  •   w00kie    13 年前

    cgitb.enable()

    try:
      blah blah failed code
    except:
      print "Status: 500"
      cgitb.handler()
    
        3
  •  0
  •   Community CDub    8 年前

    Python CGI returning an http status code, such as 403?

    其中一个答案是:

    可能在技术上更为正确, 根据RFC(假设您的 CGI脚本未在文本模式下运行

    但是,由于您在windows上执行此操作,并且没有以状态行结束标题。。。

    sys.stdout('Status: 501 Not Implemented\n')
    

    推荐文章