Function: url-http--get-referer

url-http--get-referer is a byte-compiled function defined in url-http.el.gz.

Signature

(url-http--get-referer URL)

Source Code

;; Defined in /usr/src/emacs/lisp/url/url-http.el.gz
(defun url-http--get-referer (url)
  (url-http-debug
   "getting referer from buffer: buffer:%S target-url:%S lastloc:%S"
   (current-buffer) url url-current-lastloc)
  (when url-current-lastloc
    (if (not (url-p url-current-lastloc))
        (setq url-current-lastloc (url-generic-parse-url url-current-lastloc)))
    (let ((referer (copy-sequence url-current-lastloc)))
      (setf (url-host referer) (puny-encode-domain (url-host referer)))
      (let ((referer-string (url-recreate-url referer)))
        (when (and (not (memq url-privacy-level '(low high paranoid)))
                   (not (and (listp url-privacy-level)
                             (memq 'lastloc url-privacy-level))))
          ;; url-privacy-level allows referer.  But url-lastloc-privacy-level
          ;; may restrict who we send it to.
          (cl-case url-lastloc-privacy-level
            (host-match
             (let ((referer-host (url-host referer))
                   (url-host (url-host url)))
               (when (string= referer-host url-host)
                 referer-string)))
            (domain-match
             (let ((referer-domain (url-domain referer))
                   (url-domain (url-domain url)))
               (when (and referer-domain
                          url-domain
                          (string= referer-domain url-domain))
                 referer-string)))
            (otherwise
             referer-string)))))))