Django

Code

Changeset 3870

Show
Ignore:
Timestamp:
09/26/06 13:49:28 (2 years ago)
Author:
lukeplant
Message:

Improved detection of whether a URL is internal or not for the purpose
of broken link e-mails (referred links from images.google were being
misclassified).

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/middleware/common.py

    r3834 r3870  
    33from django.core.mail import mail_managers 
    44import md5 
     5import re 
    56 
    67class CommonMiddleware(object): 
     
    6263                domain = http.get_host(request) 
    6364                referer = request.META.get('HTTP_REFERER', None) 
    64                 is_internal = referer and (domain in referer) 
     65                is_internal = _is_internal_request(domain, referer) 
    6566                path = request.get_full_path() 
    6667                if referer and not _is_ignorable_404(path) and (is_internal or '?' not in referer): 
     
    8990            return True 
    9091    return False 
     92 
     93def _is_internal_request(domain, referer): 
     94    "Return true if the referring URL is the same domain as the current request" 
     95    # Different subdomains are treated as different domains. 
     96    return referer is not None and re.match("^https?://%s/" % re.escape(domain), referer)