先看这两段用python写的CGI代码:
#第一段
def printHeader(title):
print """Content-type: text/plain
<html>
<head><title>%s</title><head>
<body>"""%title
......
#第二段
def printHeader(title)
print """Content-type: text/plain/n
<html>
<head><title>%s</title><head>
<body>"""%title
......
两段程序看上去实现的功能是一样的,都是输出一个html标头,然后是一个空行,然后是输出标题。但是实现的方法有一点区别,第一段程序是用一个空白的行来输出空行,第二段程序是用一个换行符输出一个空行。问题即将出现:大家知道,python是用缩进来标识代码的分块,因此一些python的IDE里就加入了自动进行缩进的功能,第一行出现了def,那么第二行IDE就会自动缩进一个特定的长度。在第一段程序中,输出标头后回车,这时的光标应该是与print对齐的,如果这个时候你直接又敲进去一个回车,进行一下条语句的输出,那么错误就发生了,html标头后应该是一个空行,但是这段程序中它不是空的,它是包含若干个空格字符串的行,因此就会报错。所以在进行CGI编程时应尽量采用第二种形式,在输出标头后直接加上/n就可以避免这样的错误发生。
千万不要小看这个空格,这可是我两天的心血,按书上的程序一个字不差的抄下来,为什么就是不能用呢?网上搜书上查就是找不到错误出在哪,两天时间几乎什么没干。最后一个很偶然的机会,发现光标移动到那个空行时候它不是停在最左端,于是抱着试试看的态度按了下退格,保存,再运行,终于成功了。一点小经验,不敢独享,拿来与大家分享。也许大家早已知道,那就全当给自己找点成就感,给自己的前行加一把油。