1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; require Data::Dumper; Data::Dumper->import(qw(Dumper)); use 5.010; my $generiere_objekt = sub { my ($var) = @_; if (!defined $$var) { $$var = HTTP::Async->new( timeout => 10, max_request_time => 15, cookie_jar => defined, ); } }; my $async; my $id_entfernt = 0; require HTTP::Async; require HTTP::Request::Common; my $request = HTTP::Request->new( 'GET', 'http://meine.domain/cgi-bin/meinscript.pl?key=val', HTTP::Headers->new(), ); $generiere_objekt->(\$async); $id_entfernt = $async->add($request); if (defined $async) { while (my($response,$id) = $async->wait_for_next_response) { say "ID $id :",Dumper($response); say $response->is_error; say $response->code; } }
1
2
3
4
5
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{QUERY_STRING} (.+)=(.+)
RewriteRule .* https://meine.domain/cgi-bin/meinscript.pl?%1=%2 [L]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://meine.domain/$1 [L]
1 2 3 4 5 6 7 8 9 10
require LWP::UserAgent; my $userAgent = LWP::UserAgent->new( cookie_jar => defined, timeout => 10, ssl_opts => { verify_hostname => 0, blocking => 0, }, ); my $response = $userAgent->get('https://meine.domain:443/cgi-bin/meinscript.pl?key=val');
2016-03-05T08:39:51 janwie genau hast Du ssl_options eingesetzt?
Bitte gewöhn dir an, den Code zu posten. So ist es schwer, dir zu helfen, weil keiner weiß, was genau Du getan hast. Die Fehlermeldungen deuten darauf hin, dass Du irgendwas falsch gemacht hast. Du kannst auch einfach mal dort in den Code schauen und versuchen, nachzuvollziehen, was genau erwartet wird.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#!/usr/bin/perl use strict; use warnings; use 5.010; require LWP::UserAgent; my $userAgent = LWP::UserAgent->new( cookie_jar => defined, timeout => 10, ssl_opts => { verify_hostname => 0, blocking => 0, }, ); my $response = $userAgent->get('https://meine.domain:443/cgi-bin/meinscript.pl?key=val'); if (!$response->is_error) { say $response->decoded_content; } else { say "Fehler ",$response->status_line; }
2016-03-05T12:13:40 jan_Das_ ist der LWP::UserAgent-Code. Der funktioniert doch, also inwiefern hilft er uns?
2016-03-05T12:13:40 janDer Code, der nicht funktioniert, ist interessant. Und da ist interessant, wie Du ihm die ssl-options gesetzt hast.
2016-03-05T16:34:08 GwenDragonService Unavailable 503 kann auch kommen, wen der Dienst wegen zu vieler Requests nicht erreichbar ist oder blockt.
Mein Server sendet das, wenn Clients zu oft Angriffe mit seltsamen Requests fahren.
2016-03-05T16:34:08 GwenDragonDu hast meinne Antwort gelesen, dass deine RedirectRules zu einer Dauerschleife führen können?
1
2
3
4
5
6
7
8
%ssl_options = (
...
);
...
$generiere_objekt->(\$async);
$async->ssl_options(\%ssl_options);
$id_entfernt = $async->add($request);
...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; require Data::Dumper; Data::Dumper->import(qw(Dumper)); use 5.010; my $generiere_objekt = sub { my ($var) = @_; if (!defined $$var) { $$var = HTTP::Async->new( timeout => 10, max_request_time => 15, cookie_jar => defined, ); } }; my $async; my $id_entfernt = 0; require HTTP::Async; require HTTP::Request::Common; use Net::HTTPS::NB; my $request = HTTP::Request->new( 'GET', 'https://meine.domain:443/cgi-bin/meinscript.pl?key=val', HTTP::Headers->new(), ); $generiere_objekt->(\$async); my %ssl_options = ( verify_hostname => 0, blocking => 0, ); $async->ssl_options(\%ssl_options); $id_entfernt = $async->add($request); if (defined $async) { while (my($response,$id) = $async->wait_for_next_response) { say "ID $id :",Dumper($response); say $response->is_error; say $response->code; } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ID 1 :$VAR1 = bless( {
'_request' => bless( {
'_method' => 'GET',
'_headers' => bless( {}, 'HTTP::Headers' ),
'_content' => '',
'_uri' => bless( do{\(my $o = 'https://meine.domain:443/cgi-bin/meinscript.pl?key=val')}, 'URI::https' )
}, 'HTTP::Request' ),
'_msg' => 'Service Unavailable',
'_content' => '',
'_headers' => bless( {}, 'HTTP::Headers' ),
'_rc' => 503
}, 'HTTP::Response' );
1
503
1
2
3
4
5
6
7
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{QUERY_STRING} (.+)=(.+)
RewriteCond %{REQUEST_URI} !/cgi-bin/meinscript.pl
RewriteRule .* https://meine.domain/cgi-bin/meinscript.pl?%1=%2 [L]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://meine.domain/$1 [L]
Guest janusPrüfe die Serverkonfiguration mit verschiedenen Browsern.
Guest janusUnd wenn Du mit Perl prüfst, guckst du mal SERVER_PORT, Dumper \%ENV
QuoteCode: (dl )'https://meine.domain:443/cgi-bin/meinscript.pl?key=val',
2016-03-05T08:34:02 GwenDragonRedirects kann HTTP::Async folgen bis zu 7 Redirects, höher zu setzen mit max_redirect();
2016-03-05T08:34:02 GwenDragonHast du Net::HTTPS::NB instaliert, für https ist das nötig.
2016-03-05T08:34:02 GwenDragonHast du auch $async->ssl_options(...); probiert?
QuoteCan't use string ("verify_hostname") as a HASH ref while "strict refs" in use at C:/strawberry/perl/site/lib/HTTP/Async.pm line 836.
HTTP::Async INTERNAL ERROR: 'id_opts' not empty at C:/strawberry/perl/site/lib/HTTP/Async.pm line 539.
HTTP::Async::DESTROY(HTTP::Async=HASH(0x2de06b8)) called at C:/strawberry/perl/site/lib/HTTP/Async.pm line 836
eval {...} called at C:/strawberry/perl/site/lib/HTTP/Async.pm line 836
2016-03-05T11:30:14 biancaIch denke, dass ich das durch obige Beweise ausschließen kann.
Guest janusDu musst hier niemanden was beweisen. Mit der richtigen Herangehensweise ist jedoch Jeder Fehler zu finden. So würde ich als erstes die Serverkonfiguration prüfen und insbesondere gucken, ob die Regeln in .htaccess tatsächlich auch greifen.
1
2
3
4
5
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{QUERY_STRING} (.+)=(.+)
RewriteRule .* https://meine.domain/cgi-bin/meinscript.pl?%1=%2 [L]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://meine.domain/$1 [L]
1
2
3
4
5
6
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{QUERY_STRING} (.+)=(.+)
RewriteCond %{REQUEST_URI} !/cgi-bin/meinscript.pl
RewriteRule .* https://meine.domain/cgi-bin/meinscript.pl?%1=%2 [L]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://meine.domain/$1 [L]
Quote*******************************************************************
Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client
is deprecated! Please set SSL_verify_mode to SSL_VERIFY_PEER
together with SSL_ca_file|SSL_ca_path for verification.
If you really don't want to verify the certificate and keep the
connection open to Man-In-The-Middle attacks please set
SSL_verify_mode explicitly to SSL_VERIFY_NONE in your application.
*******************************************************************
at C:/strawberry/perl/site/lib/HTTP/Async.pm line 847.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
#!/usr/bin/perl use strict; use warnings; use 5.010; my $generiere_objekt = sub { my ($var) = @_; if (!defined $$var) { $$var = HTTP::Async->new( timeout => 10, max_request_time => 15, cookie_jar => defined, ); } }; my $async; my $request_id = 0; require HTTP::Async; require HTTP::Request::Common; my $request = HTTP::Request->new( 'GET', 'https://meine.domain/cgi-bin/meinscript.pl?key=val', HTTP::Headers->new(), ); $generiere_objekt->(\$async); my %ssl_options = ( SSL_verify_mode => 0, blocking => 0, ); $async->ssl_options(\%ssl_options); $request_id = $async->add($request); if (defined $async) { while (my($response,$id) = $async->wait_for_next_response) { if ($response->is_success) { say $response->decoded_content; } else { say "Fehler ",$response->status_line; } } }
cookie_jar => defined,