我正在编写一个代理服务器,我将拦截一个请求,并检查标头是否有一个名为URID的cookie,如果没有,我想将请求重定向到fw.asta.com,看看这个域是否有一个名为URID的cookie,如果它没有,我想为fw.cisco.com设置cookie,然后重定向到最初预期的站点,然后为该站点设置相同的cookie同样。如果fw.asta.com网站存在cookie,我将使用该cookie重定向到最初预期的网站,如果最初预期的网站有URID cookie,我将代表该网站提供请求。 / p>
所以我一直在努力解决这个问题。我有一种感觉,我不明白在重定向过程中设置cookie时实际发生了什么。
我在这里有这个代码:
def do_GET(self):
#seperate the path into parts
(scm, netloc, path, params, query, fragment) = urlparse.urlparse(self.path, 'http')
#check the header for the urid cookie, returns the URID if present
urid = self.find_urid()
if netloc == 'fw.asta.com':
if urid:
#redirect to the originally intended site and set the cookie
path = self.path[23:]
self.redirect_with_urid(path, urid)
else:
#redirect to fw.asta.com
urid = 333
self.redirect_with_urid(self.path, urid)
else:
if urid:
#simply serve the site because if has the URID
self.final_destination()
else:
#no urid, so we need to go the fw.asta.com to check if the urid is there
self.redirect('http://fw.asta.com/?url=' + str(self.path))
正如您所看到的那样,逻辑是有意义的,但是当我运行代码时,我会遇到无限重定向循环到最初的目标网站。
当我收到重定向响应时,我可以清楚地看到set-cookie字段在那里,但是,当我收到重定向请求时,它不会将cookie发回给我。
这是解决问题的正确方法吗?任何建议将不胜感激。