diff options
-rw-r--r-- | cgi-bin/cookies.cgi | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/cgi-bin/cookies.cgi b/cgi-bin/cookies.cgi new file mode 100644 index 0000000..c8fe80a --- /dev/null +++ b/cgi-bin/cookies.cgi @@ -0,0 +1,62 @@ +#!/usr/bin/python3 + +import cgi +import cgitb +import os +import sys +import io +import json + +cgitb.enable() + +cookies = {} + +if os.environ.has_key('HTTP_COOKIE'): + for cookie in map(str.strip, str.split(os.environ['HTTP_COOKIE'], ';')): + (key, value) = cookie.split('=') + cookies[key] = value + +print("Content-Type: text/html") +print("") +print(""" +<html> + <head><title>Cookie test</title></head> + <body> + <h1>Reflected cookies</h1> + <ul> +""") + +for k, v in cookies.items(): + print(" <li>{}: {}</li>".format(cgi.escape(k), cgi.escape(v))) +print(""" + </ul> + <hr /> + <script>""") + +print(" var uploaded_cookies = {};".format(json.dumps(cookies))) +print(""" +function getCookie(cname) { + var name = cname + "="; + var ca = document.cookie.split(';'); + for(var i = 0; i < ca.length; i++) { + var c = ca[i]; + while (c.charAt(0) == ' ') { + c = c.substring(1); + } + if (c.indexOf(name) == 0) { + return c.substring(name.length, c.length); + } + } + return ""; +} + var counter = getCookie("counter"); + if (counter === "") { counter = "0"; } + var uploaded_counter = uploaded_cookies["counter"] || "0"; + document.write("<b>Cookie:</b> " + counter + "<br/><b>JSON:</b> " + uploaded_counter + "<br />"); + document.cookie = "counter=" + ((parseInt(counter) + 1).toString()); + </script> + </body> +</html> +""") + + |