Revision e6491c8e
Von Sven Schöling vor mehr als 3 Jahren hinzugefügt
SL/Request.pm | ||
---|---|---|
7 | 7 |
use List::Util qw(first max min sum); |
8 | 8 |
use List::MoreUtils qw(all any apply); |
9 | 9 |
use Exporter qw(import); |
10 |
use URI; |
|
10 | 11 |
|
11 | 12 |
use SL::Common; |
12 | 13 |
use SL::JSON; |
... | ... | |
21 | 22 |
use Rose::Object::MakeMethods::Generic |
22 | 23 |
( |
23 | 24 |
scalar => [ qw(applying_database_upgrades post_data) ], |
24 |
'scalar --get_set_init' => [ qw(cgi layout presenter is_ajax type cookies) ], |
|
25 |
'scalar --get_set_init' => [ qw(cgi layout presenter is_ajax type cookies request_uri) ],
|
|
25 | 26 |
); |
26 | 27 |
|
27 | 28 |
sub init_cgi { |
... | ... | |
399 | 400 |
return $target; |
400 | 401 |
} |
401 | 402 |
|
403 |
sub init_request_uri { |
|
404 |
return URI->new($ENV{HTTP_REFERER})->canonical() if $ENV{HTTP_X_FORWARDED_FOR}; |
|
405 |
return URI->new if !$ENV{REQUEST_URI}; # for testing |
|
406 |
|
|
407 |
my $scheme = $::request->is_https ? 'https' : 'http'; |
|
408 |
my $port = $ENV{SERVER_PORT}; |
|
409 |
$port = undef if (($scheme eq 'http' ) && ($port == 80)) |
|
410 |
|| (($scheme eq 'https') && ($port == 443)); |
|
411 |
|
|
412 |
my $uri = URI->new("${scheme}://"); |
|
413 |
$uri->scheme($scheme); |
|
414 |
$uri->port($port); |
|
415 |
$uri->host($ENV{HTTP_HOST} || $ENV{SERVER_ADDR}); |
|
416 |
$uri->path_query($ENV{REQUEST_URI}); |
|
417 |
$uri->query(''); |
|
418 |
|
|
419 |
return $uri; |
|
420 |
} |
|
421 |
|
|
402 | 422 |
1; |
403 | 423 |
|
404 | 424 |
__END__ |
Auch abrufbar als: Unified diff
Form::_get_request_uri nach SL::Request::request_uri verschoben.
Form::_add_to_request_uri ersatzlos gelöscht.