SPVM-HTTP-Tiny
view release on metacpan or search on metacpan
lib/SPVM/HTTP/Tiny/Transaction.spvm view on Meta::CPAN
method is_websocket : int () {
die "Not implemented.";
}
method remote_address : string () {
unless ($self->req->reverse_proxy) {
return $self->original_remote_address;
}
my $x_forwarded_for = $self->req->headers->header("X-Forwarded-For");
unless ($x_forwarded_for) {
$x_forwarded_for = "";
}
my $addrs = Re->split("\s*,\s*", $x_forwarded_for);
my $trusted = $self->req->trusted_proxies;
unless (@$trusted) {
if (@$addrs) {
return $addrs->[@$addrs - 1];
lib/SPVM/HTTP/Tiny/Transaction.spvm view on Meta::CPAN
sub is_websocket {undef}
sub remote_address {
my $self = shift;
return $self->original_remote_address(@_) if @_;
return $self->original_remote_address unless $self->req->reverse_proxy;
# Reverse proxy
my @addrs = split /\s*,\s*/, ($self->req->headers->header('X-Forwarded-For') // '');
my $trusted = $self->req->trusted_proxies;
return @addrs ? $addrs[-1] : $self->original_remote_address unless @$trusted;
push @addrs, $self->original_remote_address;
for my $addr (reverse @addrs) {
return $addr unless any { network_contains($_, $addr) } @$trusted;
}
return $addrs[0];
}
lib/SPVM/HTTP/Tiny/Transaction.spvm view on Meta::CPAN
my $bool = $tx->is_websocket;
False, this is not a L<Mojo::Transaction::WebSocket> object.
=head2 remote_address
my $address = $tx->remote_address;
$tx = $tx->remote_address('127.0.0.1');
Same as L</"original_remote_address"> unless L</"req"> has been performed via a L<Mojo::Message::Request/reverse_proxy>.
If so then the last value of C<X-Forwarded-For> header is returned. Additionally if
L<Mojo::Message::Request/trusted_proxies> are also provided then the original address must be trusted and any
C<X-Forwarded-For> entries that are trusted are ignored, returning the last untrusted address or the first address if
all are trusted.
=head2 result
my $res = $tx->result;
Returns the L<Mojo::Message::Response> object from L</"res"> or dies if a connection error has occurred.
# Fine grained response handling (dies on connection errors)
my $res = $tx->result;
( run in 0.235 second using v1.01-cache-2.11-cpan-26ccb49234f )