From 59cb884ace1cb1c3339f1d0f05895501dd4d0447 Mon Sep 17 00:00:00 2001 From: Paul Tremberth Date: Wed, 5 Oct 2016 18:44:46 +0200 Subject: [PATCH] Use urlparse_cached() for OriginWhenCrossOriginPolicy --- scrapy/spidermiddlewares/referer.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/scrapy/spidermiddlewares/referer.py b/scrapy/spidermiddlewares/referer.py index bf2a3c037..60f21ae84 100644 --- a/scrapy/spidermiddlewares/referer.py +++ b/scrapy/spidermiddlewares/referer.py @@ -193,9 +193,9 @@ class OriginPolicy(ReferrerPolicy): name = POLICY_ORIGIN def referrer(self, response, request): - stripped = self.strip_url_parsed(response, origin_only=True) - if stripped is not None: - return urlunparse(stripped) + origin = self.strip_url_parsed(response, origin_only=True) + if origin is not None: + return urlunparse(origin) class OriginWhenCrossOriginPolicy(ReferrerPolicy): @@ -212,14 +212,13 @@ class OriginWhenCrossOriginPolicy(ReferrerPolicy): name = POLICY_ORIGIN_WHEN_CROSS_ORIGIN def referrer(self, response, request): - target_url = request.url - referrer_source = response.url - source_origin = self.origin(referrer_source) - if source_origin == self.origin(target_url): - return self.strip_url(referrer_source, origin_only=False) + origin = self.origin_parsed(response) + if origin == self.origin_parsed(request): + stripped = self.strip_url_parsed(response) + if stripped is not None: + return urlunparse(stripped) else: - return source_origin - + return urlunparse(origin + ('', '', '')) class UnsafeUrlPolicy(ReferrerPolicy):