blob: 0bf3337aeb147083103788ed7eced510a165ed0b [file] [log] [blame]
#!/usr/bin/env python3
import os
import sys
cookies = {}
if 'HTTP_COOKIE' in os.environ:
header_cookies = os.environ['HTTP_COOKIE']
header_cookies = header_cookies.split('; ')
for cookie in header_cookies:
cookie = cookie.split('=')
cookies[cookie[0]] = cookie[1]
sys.stdout.write(
'cache-control: no-store\r\n'
'Content-Type: text/html\r\n'
)
location = cookies.get('location', '')
if location:
sys.stdout.write(
'status: 303\r\n'
'Location: {}\r\n\r\n'.format(location)
)
sys.exit(0)
sys.stdout.write(
'\r\n'
'<script src=\'redirect-updates-history-item.js\'></script>\n'
'<script>\n'
'onunload = function() {\n'
' // no page cache\n'
'}\n'
'\n'
'onload = function() {\n'
' setTimeout(function() {\n'
' // The first time through here (sessionStorage.done is false), this\n'
' // code inserts a new history item using pushState, and then it\n'
' // triggers a reload of the history item. However, we set the\n'
' // "location" cookie so that when we reload this page, we actually\n'
' // redirect to the value of the "location" cookie.\n'
' //\n'
' // This loads the "goback" page, which bounces us back here after\n'
' // setting sessionStorage.done to true. The point of this test is to\n'
' // ensure that going back actually performs a real navigation as\n'
' // opposed to performing a "same document navigation" as would normally\n'
' // be done when navigating back after a pushState.\n'
'\n'
' if (sessionStorage.done) {\n'
' location.replace("redirect-updates-history-item-done.html"); \n'
' } else {\n'
' history.pushState(null, null, "");\n'
'\n'
' setLocationCookie("redirect-on-reload-updates-history-item-goback.html");\n'
' location.reload();\n'
' }\n'
' }, 0);\n'
'}\n'
'</script>\n'
'\n'
'<p>redirect-on-reload-updates-history-item.py: You should not see this text!</p>\n'
)