From d6c405904416e54d5d550c9f61922f0ebfae2388 Mon Sep 17 00:00:00 2001 From: Fredrik Jonsson <frjo@xdeb.org> Date: Mon, 17 Sep 2018 11:02:58 +0200 Subject: [PATCH] Add query to get_success_url to avoid cache issues with CloudFlare page rule that cache everything. Check if HTTP_ORIGIN and HTTP_REFERER is set before using them. --- opentech/public/mailchimp/views.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/opentech/public/mailchimp/views.py b/opentech/public/mailchimp/views.py index 56534258b..ae0a9e4a3 100644 --- a/opentech/public/mailchimp/views.py +++ b/opentech/public/mailchimp/views.py @@ -1,5 +1,7 @@ import logging +from time import time + from django.conf import settings from django.contrib import messages from django.http import HttpResponseRedirect @@ -76,8 +78,15 @@ class MailchimpSubscribeView(FormMixin, RedirectView): messages.success(self.request, _('Thank you for subscribing')) def get_success_url(self): - # Go back to where you came from - return self.request.META['HTTP_REFERER'] + # Go back to where you came from, default to front page. + origin = '/' + if 'HTTP_ORIGIN' in self.request.META: + origin = self.request.META['HTTP_ORIGIN'] + elif 'HTTP_REFERER' in self.request.META: + origin = self.request.META['HTTP_REFERER'] + + # Add cache busting query string. + return origin + '?newsletter-' + str(time.time()) def get_redirect_url(self): # We don't know where you came from, go home -- GitLab