代码拉取完成,页面将自动刷新
#!/usr/bin/perl
# (C) Andrey Zelenkov
# (C) Nginx, Inc.
# Tests for HTTP/2 protocol with server_tokens directive.
###############################################################################
use warnings;
use strict;
use Test::More;
BEGIN { use FindBin; chdir($FindBin::Bin); }
use lib 'lib';
use Test::Nginx;
use Test::Nginx::HTTP2;
###############################################################################
select STDERR; $| = 1;
select STDOUT; $| = 1;
my $t = Test::Nginx->new()->has(qw/http http_v2 rewrite/)->plan(12)
->write_file_expand('nginx.conf', <<'EOF');
%%TEST_GLOBALS%%
daemon off;
events {
}
http {
%%TEST_GLOBALS_HTTP%%
server {
listen 127.0.0.1:8080 http2;
server_name localhost;
location /200 {
return 200;
}
location /404 {
return 404;
}
location /off {
server_tokens off;
location /off/200 {
return 200;
}
location /off/404 {
return 404;
}
}
location /on {
server_tokens on;
location /on/200 {
return 200;
}
location /on/404 {
return 404;
}
}
location /b {
server_tokens build;
location /b/200 {
return 200;
}
location /b/404 {
return 404;
}
}
}
}
EOF
# suppress deprecation warning
open OLDERR, ">&", \*STDERR; close STDERR;
$t->run();
open STDERR, ">&", \*OLDERR;
###############################################################################
my $re = qr/nginx\/\d+\.\d+\.\d+/;
like(header_server('/200'), qr/^$re$/, 'http2 tokens default 200');
like(header_server('/404'), qr/^$re$/, 'http2 tokens default 404');
like(body('/404'), qr/$re/, 'http2 tokens default 404 body');
is(header_server('/off/200'), 'nginx', 'http2 tokens off 200');
is(header_server('/off/404'), 'nginx', 'http2 tokens off 404');
like(body('/off/404'), qr/nginx(?!\/)/, 'http2 tokens off 404 body');
like(header_server('/on/200'), qr/^$re$/, 'http2 tokens on 200');
like(header_server('/on/404'), qr/^$re$/, 'http2 tokens on 404');
like(body('/on/404'), $re, 'http2 tokens on 404 body');
$re = qr/$re \(.*\)/ if $t->has_module('--build=');
like(header_server('/b/200'), qr/^$re$/, 'http2 tokens build 200');
like(header_server('/b/404'), qr/^$re$/, 'http2 tokens build 404');
like(body('/b/404'), qr/$re/, 'http2 tokens build 404 body');
###############################################################################
sub header_server {
my ($path) = shift;
my $s = Test::Nginx::HTTP2->new();
my $sid = $s->new_stream({ path => $path });
my $frames = $s->read(all => [{ sid => $sid, fin => 1 }]);
my ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
return $frame->{headers}->{'server'};
}
sub body {
my ($path) = shift;
my $s = Test::Nginx::HTTP2->new();
my $sid = $s->new_stream({ path => $path });
my $frames = $s->read(all => [{ sid => $sid, fin => 1 }]);
my ($frame) = grep { $_->{type} eq "DATA" } @$frames;
return $frame->{'data'};
}
###############################################################################
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。