重定向时获取错误标题

时间:2013-06-16 16:08:28

标签: python mysql apache

前几天我在堆栈溢出中看到如何使用函数重定向.. 但它不在这里工作

#!/Python27/python
import cgi
import cgitb ; cgitb.enable()
import MySQLdb
from datetime import datetime
f= cgi.FieldStorage()
l=f["roll"].value
def redirect(url):
    print "Content-Type: text/plain"
    print "Refresh: 0; url='%s'" % url
    print
    print "Redirecting..."

Con = MySQLdb.Connect(host="127.0.0.1", port=3306, user="root", passwd="jesus",        db="student")
cursor = Con.cursor()
sql="SELECT YEAR FROM STDDET WHERE id='%s'"%(l)
cursor.execute(sql)
data=cursor.fetchone()
cyear=datetime.now().year
cmonth=datetime.now().month
data=data[0]
data=int(data)
year=cyear-data
print year
if(year==3):
    redirect("intro.html")
elif(year==4):
     redirect("yea4.html")

即使if条件满足也没有被重定向...我收到错误标题错误... plz help !!

1 个答案:

答案 0 :(得分:0)

据我所知,您的脚本会产生以下响应:

Content-Type: text/plain Refresh: 0; url='x.y.com'

Redirecting...

这不是有效的http响应,因为缺少status line

如果您生成“有效”页面,则应回复状态

HTTP/1.1 302 Found

如果您要重定向,更好的办法是回复3xx代码之一。举个例子:

HTTP/1.1 302 Found
Location: http://www.google.fr/

HTTP/1.1 ...行必须是标题的第一行。所以它应该由程序的第一个print生成。有关示例,请参阅Python CGI returning an http status code, such as 403?