document.py (1179B)
1 import os, sys, json 2 3 from wptserve.utils import isomorphic_decode, isomorphic_encode 4 5 import importlib 6 util = importlib.import_module("common.security-features.scope.util") 7 8 def main(request, response): 9 policyDeliveries = json.loads(request.GET.first(b"policyDeliveries", b"[]")) 10 maybe_additional_headers = {} 11 meta = u'' 12 error = u'' 13 for delivery in policyDeliveries: 14 if delivery[u'deliveryType'] == u'meta': 15 if delivery[u'key'] == u'referrerPolicy': 16 meta += u'<meta name="referrer" content="%s">' % delivery[u'value'] 17 else: 18 error = u'invalid delivery key' 19 elif delivery[u'deliveryType'] == u'http-rp': 20 if delivery[u'key'] == u'referrerPolicy': 21 maybe_additional_headers[b'Referrer-Policy'] = isomorphic_encode(delivery[u'value']) 22 else: 23 error = u'invalid delivery key' 24 else: 25 error = u'invalid deliveryType' 26 27 handler = lambda: util.get_template(u"document.html.template") % ({ 28 u"meta": meta, 29 u"error": error 30 }) 31 util.respond( 32 request, 33 response, 34 payload_generator=handler, 35 content_type=b"text/html", 36 maybe_additional_headers=maybe_additional_headers)