⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 auth.pm

📁 网页留言本,比一般的留言簿管用
💻 PM
字号:
package HTTP::Headers::Auth;use strict;use vars qw($VERSION);$VERSION = sprintf("%d.%02d", q$Revision: 1.2 $ =~ /(\d+)\.(\d+)/);require HTTP::Headers;package HTTP::Headers;BEGIN {    # we provide a new (and better) implementations below    undef(&www_authenticate);    undef(&proxy_authenticate);}require HTTP::Headers::Util;sub _parse_authenticate{    my @ret;    for (HTTP::Headers::Util::split_header_words(@_)) {	if (!defined($_->[1])) {	    # this is a new auth scheme	    push(@ret, lc(shift @$_) => {});	    shift @$_;	}	if (@ret) {	    # this a new parameter pair for the last auth scheme	    while (@$_) {		my $k = lc(shift @$_);		my $v = shift @$_;	        $ret[-1]{$k} = $v;	    }	} else {	    # something wrong, parameter pair without any scheme seen	    # IGNORE	}    }    @ret;}sub _authenticate{    my $self = shift;    my $header = shift;    my @old = $self->_header($header);    if (@_) {	$self->remove_header($header);	my @new = @_;	while (@new) {	    my $a_scheme = shift(@new);	    if ($a_scheme =~ /\s/) {		# assume complete valid value, pass it through		$self->push_header($header, $a_scheme);	    } else {		my @param;		if (@new) {		    my $p = $new[0];		    if (ref($p) eq "ARRAY") {			@param = @$p;			shift(@new);		    } elsif (ref($p) eq "HASH") {			@param = %$p;			shift(@new);		    }		}		my $val = ucfirst(lc($a_scheme));		if (@param) {		    my $sep = " ";		    while (@param) {			my $k = shift @param;			my $v = shift @param;			if ($v =~ /[^0-9a-zA-Z]/ || lc($k) eq "realm") {			    # must quote the value			    $v =~ s,([\\\"]),\\$1,g;			    $v = qq("$v");			}			$val .= "$sep$k=$v";			$sep = ", ";		    }		}		$self->push_header($header, $val);	    }	}    }    return unless defined wantarray;    wantarray ? _parse_authenticate(@old) : join(", ", @old);}sub www_authenticate    { shift->_authenticate("WWW-Authenticate", @_)   }sub proxy_authenticate  { shift->_authenticate("Proxy-Authenticate", @_) }1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -