--- loncom/auth/lonacc.pm 2000/10/30 22:41:55 1.11 +++ loncom/auth/lonacc.pm 2000/10/31 19:26:21 1.12 @@ -39,7 +39,24 @@ sub handler { $ENV{'user.environment'} = "$lonidsdir/$handle.id"; $ENV{'request.state'} = "published"; $ENV{'request.filename'} = $r->filename; - $ENV{'HTTP_REFERER'} = $r->header_in('Referer'); + +# ---- Figure out referer, first from HTTP_REFERER, then cache, then wild guess + + my $referer=''; + if ($referer=$r->header_in('Referer')) { + $ENV{'HTTP_REFERER'}=$referer; + } else { + $ENV{'HTTP_REFERER'}=$ENV{'httpref.'.$requrl}; + unless($ENV{'HTTP_REFERER'}) { + my $pathpart=$requrl; + $pathpart=~s/\/[\w\.]*$//; + map { + if ($_=~/^httpref.$pathpart/) { + $ENV{'HTTP_REFERER'}=$ENV{$_}; + } + } keys %ENV; + } + } # -------------------------------------------------------- Load POST parameters