使用“Location”标头转发的URL转发 - 仅部分转发?

时间:2011-04-13 15:54:02

标签: python cgi

问候所有人,

我有一个使用

的python CGI脚本
print "Location: [nextfilename]"
print

在“转发”之后(引用的原因在一秒内显而易见),我看到它转发的页面的HTML很好,但是没有显示所有图像等。地址栏仍然将cgi脚本显示为当前位置,而不是HTML文件本身。如果我直接转到HTML文件,它显示正常。

基本上,CGI脚本存储在cgi-bin中,而HTML文件则不是,它试图渲染具有被破坏的关系链接的图像。

我如何实际转发到下一页,而不只是通过cgi脚本呈现下一页?

我已经使用细齿梳子完成了脚本,以确保我实际上并没有使用打印htmlDoc命令来阻止和搞砸它。

适用的代码部分:

def get_nextStepName():
        """Generates a random filename."""
        nextStepBuilder  = ["../htdocs/bcc/"]
        fileLength = random.randrange(10)+5
        for i in range(fileLength):
                j = random.choice(varLists.ALPHANUM)
                nextStepBuilder.append(j)
        nextStepName = ""
        for char in nextStepBuilder:
                nextStepName += char
        nextStepName += ".html"
        return nextStepName

def make_step2(user, password, email, headerContent, mainContent, sideSetup, sideContent, footerContent):
        """Creates the next step of user registration and logs valid data to a pickle for later confirmation."""
        nextStepName = get_nextStepName()
        mainContent = "<h1>Step Two: The Nitty Gritty</h1>"
        mainContent += "<p>User Name: %s </p>" % (user)
        mainContent += """\
               [HTML CODE GOES HERE]
                        """
        htmlDoc = htmlGlue.glue(headerContent, mainContent, sideSetup, sideContent, footerContent)
        f = open(nextStepName, "w")
        f.write(htmlDoc)
        f.close()

        nextStepName = nextStepName[9:] #truncates the ../htdocs part of the filename to fix a relational link issue when redirecting
        gotoNext(nextStepName)

def gotoNext(filename):
        nextLocation = "Location:"
        nextLocation += filename
        print(nextLocation)
        print

有什么想法?万分感谢。 CGI对我来说是新的。

1 个答案:

答案 0 :(得分:2)

您还需要发送30X Status标头。有关详细信息,请参阅RFC 2616。