Переадресация URL cgi с заголовком «Location» - только частичная пересылка? - PullRequest
0 голосов
/ 13 апреля 2011

Привет всем,

У меня есть сценарий Python CGI, который использует

print "Location: [nextfilename]"
print

После «пересылки» (причина появления кавычек становится очевидной через секунду), я вижу HTML-код страницы, на которую он переадресовал, но все изображения и т. Д. Не отображаются. В адресной строке по-прежнему отображается сценарий cgi в качестве текущего местоположения, а не сам файл HTML. Если я перейду к HTML-файлу напрямую, он отобразится нормально.

По сути, скрипт CGI, который хранится в cgi-bin, а файлы HTML - нет, пытается отобразить изображения с реляционными ссылками, которые не работают.

Как мне на самом деле перейти на следующую страницу, а не просто отобразить следующую страницу с помощью сценария cgi?

Я прошел через сценарий с тонкой гребенкой, чтобы убедиться, что я фактически не использовал команду print 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 Ответ

2 голосов
/ 13 апреля 2011

Вам также необходимо отправить заголовок 30X Status.Подробнее см. RFC 2616.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...