blob: a03dd54571d3123757392d35bb837aa3d821a7ed [file] [log] [blame]
#!/usr/bin/env python3
import os
import sys
from urllib.parse import parse_qs
query = parse_qs(os.environ.get('QUERY_STRING', ''), keep_blank_values=True)
message = query.get('message', [''])[0]
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(
'Content-Type: text/html\r\n\r\n'
'{}<br>'.format(message)
)
for name in [
query.get('name1', [''])[0],
query.get('name2', [None])[0],
query.get('name3', [None])[0]
]:
if not name:
continue
cookie = cookies.get(name, None)
if not cookie:
print('Did not receive cookie named \'{}\'.<br>'.format(name), end='')
else:
print('Received cookie named \'{}\'.<br>'.format(name), end='')
print('''<p id="output"></p>
<script>
document.getElementById("output").textContent = "Client-side document.cookie: " + document.cookie;
function messageToTop(messagePrefix, fetchData) {
top.postMessage(messagePrefix + " document.cookie == " + document.cookie +
(fetchData ? ", cookies seen server-side == " + JSON.stringify(fetchData) : ""), "http://127.0.0.1:8000");
}
function receiveMessage(event) {
if (event.origin === "http://127.0.0.1:8000") {
if (event.data.indexOf("reportBackCookies") !== -1) {
fetch("echo-incoming-cookies-as-json.py", { credentials: "same-origin" }).then(function(response) {
return response.json();
}).then(function(data) {
messageToTop("PASS", data);
}).catch(function(error) {
console.log(error.message);
});
} else {
messageToTop("FAIL Unknown request.");
}
} else {
messageToTop("Fail Received a message from an unexpected origin: " + event.origin);
}
}
window.addEventListener("message", receiveMessage, false);
</script>''')