Python CGI返回HTTP状态码,比如403?

20

如何使我的 Python CGI 返回特定的 HTTP 状态码,例如 403 或 418?

我尝试了显而易见的方法(print "Status:403 Forbidden"),但它不起作用。

2个回答

22
print 'Status: 403 Forbidden'
print

我试过了,对我起作用。但你需要第二个print语句,因为你需要一个双换行符来结束HTTP响应头。否则,你的Web服务器可能会抱怨你没有发送完整的头部。

sys.stdout('Status: 403 Forbidden\r\n\r\n')

根据 RFC 规范(假设您的 CGI 脚本没有在 Windows 的文本模式下运行),CRLF 可能在技术上更正确。然而,两种换行符似乎在任何地方都可以使用。


0

我不明白为什么它不应该。 - SilentGhost
只有当您使用CGIHTTPServer时才需要。 - bobince
尽管在这个现代的包装库和面向对象框架的时代,CGI应用程序似乎有些陌生,但它们确实只是将字面的HTTP头错误消息打印到标准输出,后跟两个换行符。如果想避免硬编码标题,可以导入http.HTTPStatus(自3.5引入),或者参考https://httpstatus.es。 - TheDudeAbides

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接