O redirecionamento 301 sempre preserva o referenciador?

Eu quero saber se o redirecionamento 301 sempre preserva o referenciador.

Eu faço uma página chamada "gotoorig_https.html", que contém um hiperlink para uma página "orig_https.asp".
"orig_https.asp" redirecionará 301 para "dest.html", que mostra o documento.referrer.

Nesse caso,

http page(gotoorig_https.html) -> orig_https.asp(301 redirect)-> https page (dest.html) <--the referrer preserves  
https page(gotoorig_https.html) -> orig_https.asp(301 redirect)-> https page (dest.html) <--the referrer preserves  

Eu também faço uma página chamada "gotoorig_http.html" que contém um hyperlink para uma página "orig_http.asp". "orig_http.asp" irá redirecionar 301 para "dest.html", que mostra o document.referrer.

Nesse caso,

http page(gotoorig_http.html) -> orig_http.asp(301 redirect)-> http page (dest.html) <--the referrer preserves  
https page(gotoorig_http.html) -> orig_http.asp(301 redirect)-> http page (dest.html) <--the referrer DOES NOT preserve.

Por que o último caso acontece?

questionAnswers(3)

yourAnswerToTheQuestion