| import os, sys, json |
| |
| from wptserve.utils import isomorphic_decode, isomorphic_encode |
| |
| import importlib |
| util = importlib.import_module("common.security-features.scope.util") |
| |
| def main(request, response): |
| policyDeliveries = json.loads(request.GET.first(b"policyDeliveries", b"[]")) |
| maybe_additional_headers = {} |
| meta = u'' |
| error = u'' |
| for delivery in policyDeliveries: |
| if delivery[u'deliveryType'] == u'meta': |
| if delivery[u'key'] == u'referrerPolicy': |
| meta += u'<meta name="referrer" content="%s">' % delivery[u'value'] |
| else: |
| error = u'invalid delivery key' |
| elif delivery[u'deliveryType'] == u'http-rp': |
| if delivery[u'key'] == u'referrerPolicy': |
| maybe_additional_headers[b'Referrer-Policy'] = isomorphic_encode(delivery[u'value']) |
| else: |
| error = u'invalid delivery key' |
| else: |
| error = u'invalid deliveryType' |
| |
| handler = lambda: util.get_template(u"document.html.template") % ({ |
| u"meta": meta, |
| u"error": error |
| }) |
| util.respond( |
| request, |
| response, |
| payload_generator=handler, |
| content_type=b"text/html", |
| maybe_additional_headers=maybe_additional_headers) |