mirror of
https://github.com/openresty/headers-more-nginx-module
synced 2024-11-11 20:35:56 +01:00
629 lines
13 KiB
Perl
629 lines
13 KiB
Perl
# vim:set ft= ts=4 sw=4 et fdm=marker:
|
|
|
|
use lib 'lib';
|
|
use Test::Nginx::Socket;
|
|
|
|
#worker_connections(1014);
|
|
#master_process_enabled(1);
|
|
#log_level('warn');
|
|
|
|
repeat_each(2);
|
|
|
|
plan tests => repeat_each() * (4 * blocks());
|
|
|
|
#no_diff();
|
|
no_long_string();
|
|
|
|
run_tests();
|
|
|
|
__DATA__
|
|
|
|
=== TEST 1: clear Opera user-agent
|
|
--- config
|
|
location /t {
|
|
more_clear_input_headers User-Agent;
|
|
echo "User-Agent: $http_user_agent";
|
|
}
|
|
|
|
--- request
|
|
GET /t
|
|
|
|
--- more_headers
|
|
User-Agent: Opera/9.80 (Macintosh; Intel Mac OS X 10.7.4; U; en) Presto/2.10.229 Version/11.62
|
|
|
|
--- stap
|
|
F(ngx_http_headers_more_exec_input_cmd) {
|
|
printf("rewrite: opera: %d\n", $r->headers_in->opera)
|
|
}
|
|
|
|
F(ngx_http_core_content_phase) {
|
|
printf("content: opera: %d\n", $r->headers_in->opera)
|
|
}
|
|
|
|
--- stap_out
|
|
rewrite: opera: 1
|
|
content: opera: 0
|
|
|
|
--- response_body
|
|
User-Agent:
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 2: clear MSIE 4 user-agent
|
|
--- config
|
|
location /t {
|
|
more_clear_input_headers User-Agent;
|
|
echo "User-Agent: $http_user_agent";
|
|
}
|
|
|
|
--- request
|
|
GET /t
|
|
|
|
--- more_headers
|
|
User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows NT 5.0)
|
|
|
|
--- stap
|
|
F(ngx_http_headers_more_exec_input_cmd) {
|
|
printf("rewrite: msie=%d msie6=%d\n",
|
|
$r->headers_in->msie,
|
|
$r->headers_in->msie6)
|
|
}
|
|
|
|
F(ngx_http_core_content_phase) {
|
|
printf("content: msie=%d msie6=%d\n",
|
|
$r->headers_in->msie,
|
|
$r->headers_in->msie6)
|
|
}
|
|
|
|
--- stap_out
|
|
rewrite: msie=1 msie6=1
|
|
content: msie=0 msie6=0
|
|
|
|
--- response_body
|
|
User-Agent:
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 3: set custom MSIE 4 user-agent
|
|
--- config
|
|
location /t {
|
|
more_set_input_headers "User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows NT 5.0)";
|
|
echo "User-Agent: $http_user_agent";
|
|
}
|
|
|
|
--- request
|
|
GET /t
|
|
|
|
--- stap
|
|
F(ngx_http_headers_more_exec_input_cmd) {
|
|
printf("rewrite: msie=%d msie6=%d\n",
|
|
$r->headers_in->msie,
|
|
$r->headers_in->msie6)
|
|
}
|
|
|
|
F(ngx_http_core_content_phase) {
|
|
printf("content: msie=%d msie6=%d\n",
|
|
$r->headers_in->msie,
|
|
$r->headers_in->msie6)
|
|
}
|
|
|
|
--- stap_out
|
|
rewrite: msie=0 msie6=0
|
|
content: msie=1 msie6=1
|
|
|
|
--- response_body
|
|
User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows NT 5.0)
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 4: clear MSIE 5 user-agent
|
|
--- config
|
|
location /t {
|
|
more_clear_input_headers User-Agent;
|
|
echo "User-Agent: $http_user_agent";
|
|
}
|
|
|
|
--- request
|
|
GET /t
|
|
|
|
--- more_headers
|
|
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows 95; MSIECrawler)
|
|
|
|
--- stap
|
|
F(ngx_http_headers_more_exec_input_cmd) {
|
|
printf("rewrite: msie=%d msie6=%d\n",
|
|
$r->headers_in->msie,
|
|
$r->headers_in->msie6)
|
|
}
|
|
|
|
F(ngx_http_core_content_phase) {
|
|
printf("content: msie=%d msie6=%d\n",
|
|
$r->headers_in->msie,
|
|
$r->headers_in->msie6)
|
|
}
|
|
|
|
--- stap_out
|
|
rewrite: msie=1 msie6=1
|
|
content: msie=0 msie6=0
|
|
|
|
--- response_body
|
|
User-Agent:
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 5: set custom MSIE 5 user-agent
|
|
--- config
|
|
location /t {
|
|
more_set_input_headers "User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows 95; MSIECrawler)";
|
|
echo "User-Agent: $http_user_agent";
|
|
}
|
|
|
|
--- request
|
|
GET /t
|
|
|
|
--- stap
|
|
F(ngx_http_headers_more_exec_input_cmd) {
|
|
printf("rewrite: msie=%d msie6=%d\n",
|
|
$r->headers_in->msie,
|
|
$r->headers_in->msie6)
|
|
}
|
|
|
|
F(ngx_http_core_content_phase) {
|
|
printf("content: msie=%d msie6=%d\n",
|
|
$r->headers_in->msie,
|
|
$r->headers_in->msie6)
|
|
}
|
|
|
|
--- stap_out
|
|
rewrite: msie=0 msie6=0
|
|
content: msie=1 msie6=1
|
|
|
|
--- response_body
|
|
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows 95; MSIECrawler)
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 6: clear MSIE 6 (without SV1) user-agent
|
|
--- config
|
|
location /t {
|
|
more_clear_input_headers User-Agent;
|
|
echo "User-Agent: $http_user_agent";
|
|
}
|
|
|
|
--- request
|
|
GET /t
|
|
|
|
--- more_headers
|
|
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Google Wireless Transcoder;)
|
|
|
|
--- stap
|
|
F(ngx_http_headers_more_exec_input_cmd) {
|
|
printf("rewrite: msie=%d msie6=%d\n",
|
|
$r->headers_in->msie,
|
|
$r->headers_in->msie6)
|
|
}
|
|
|
|
F(ngx_http_core_content_phase) {
|
|
printf("content: msie=%d msie6=%d\n",
|
|
$r->headers_in->msie,
|
|
$r->headers_in->msie6)
|
|
}
|
|
|
|
--- stap_out
|
|
rewrite: msie=1 msie6=1
|
|
content: msie=0 msie6=0
|
|
|
|
--- response_body
|
|
User-Agent:
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 7: set custom MSIE 6 (without SV1) user-agent
|
|
--- config
|
|
location /t {
|
|
more_set_input_headers "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Google Wireless Transcoder;)";
|
|
echo "User-Agent: $http_user_agent";
|
|
}
|
|
|
|
--- request
|
|
GET /t
|
|
|
|
--- stap
|
|
F(ngx_http_headers_more_exec_input_cmd) {
|
|
printf("rewrite: msie=%d msie6=%d\n",
|
|
$r->headers_in->msie,
|
|
$r->headers_in->msie6)
|
|
}
|
|
|
|
F(ngx_http_core_content_phase) {
|
|
printf("content: msie=%d msie6=%d\n",
|
|
$r->headers_in->msie,
|
|
$r->headers_in->msie6)
|
|
}
|
|
|
|
--- stap_out
|
|
rewrite: msie=0 msie6=0
|
|
content: msie=1 msie6=1
|
|
|
|
--- response_body
|
|
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Google Wireless Transcoder;)
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 8: clear MSIE 6 (with SV1) user-agent
|
|
--- config
|
|
location /t {
|
|
more_clear_input_headers User-Agent;
|
|
echo "User-Agent: $http_user_agent";
|
|
}
|
|
|
|
--- request
|
|
GET /t
|
|
|
|
--- more_headers
|
|
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1)
|
|
|
|
--- stap
|
|
F(ngx_http_headers_more_exec_input_cmd) {
|
|
printf("rewrite: msie=%d msie6=%d\n",
|
|
$r->headers_in->msie,
|
|
$r->headers_in->msie6)
|
|
}
|
|
|
|
F(ngx_http_core_content_phase) {
|
|
printf("content: msie=%d msie6=%d\n",
|
|
$r->headers_in->msie,
|
|
$r->headers_in->msie6)
|
|
}
|
|
|
|
--- stap_out
|
|
rewrite: msie=1 msie6=0
|
|
content: msie=0 msie6=0
|
|
|
|
--- response_body
|
|
User-Agent:
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 9: set custom MSIE 6 (with SV1) user-agent
|
|
--- config
|
|
location /t {
|
|
more_set_input_headers "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1)";
|
|
echo "User-Agent: $http_user_agent";
|
|
}
|
|
|
|
--- request
|
|
GET /t
|
|
|
|
--- stap
|
|
F(ngx_http_headers_more_exec_input_cmd) {
|
|
printf("rewrite: msie=%d msie6=%d\n",
|
|
$r->headers_in->msie,
|
|
$r->headers_in->msie6)
|
|
}
|
|
|
|
F(ngx_http_core_content_phase) {
|
|
printf("content: msie=%d msie6=%d\n",
|
|
$r->headers_in->msie,
|
|
$r->headers_in->msie6)
|
|
}
|
|
|
|
--- stap_out
|
|
rewrite: msie=0 msie6=0
|
|
content: msie=1 msie6=0
|
|
|
|
--- response_body
|
|
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1)
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 10: set custom MSIE 7 user-agent
|
|
--- config
|
|
location /t {
|
|
more_set_input_headers "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; winfx; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Zune 2.0)";
|
|
echo "User-Agent: $http_user_agent";
|
|
}
|
|
|
|
--- request
|
|
GET /t
|
|
|
|
--- stap
|
|
F(ngx_http_headers_more_exec_input_cmd) {
|
|
printf("rewrite: msie=%d msie6=%d\n",
|
|
$r->headers_in->msie,
|
|
$r->headers_in->msie6)
|
|
}
|
|
|
|
F(ngx_http_core_content_phase) {
|
|
printf("content: msie=%d msie6=%d\n",
|
|
$r->headers_in->msie,
|
|
$r->headers_in->msie6)
|
|
}
|
|
|
|
--- stap_out
|
|
rewrite: msie=0 msie6=0
|
|
content: msie=1 msie6=0
|
|
|
|
--- response_body
|
|
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; winfx; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Zune 2.0)
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 11: clear Gecko user-agent
|
|
--- config
|
|
location /t {
|
|
more_clear_input_headers User-Agent;
|
|
echo "User-Agent: $http_user_agent";
|
|
}
|
|
|
|
--- request
|
|
GET /t
|
|
|
|
--- more_headers
|
|
User-Agent: Mozilla/5.0 (Android; Mobile; rv:13.0) Gecko/13.0 Firefox/13.0
|
|
|
|
--- stap
|
|
F(ngx_http_headers_more_exec_input_cmd) {
|
|
printf("rewrite: gecko: %d\n", $r->headers_in->gecko)
|
|
}
|
|
|
|
|
|
F(ngx_http_core_content_phase) {
|
|
printf("content: gecko: %d\n", $r->headers_in->gecko)
|
|
}
|
|
|
|
--- stap_out
|
|
rewrite: gecko: 1
|
|
content: gecko: 0
|
|
|
|
--- response_body
|
|
User-Agent:
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 12: set custom Gecko user-agent
|
|
--- config
|
|
location /t {
|
|
more_set_input_headers "User-Agent: Mozilla/5.0 (Android; Mobile; rv:13.0) Gecko/13.0 Firefox/13.0";
|
|
echo "User-Agent: $http_user_agent";
|
|
}
|
|
|
|
--- request
|
|
GET /t
|
|
|
|
--- stap
|
|
F(ngx_http_headers_more_exec_input_cmd) {
|
|
printf("rewrite: gecko: %d\n", $r->headers_in->gecko)
|
|
}
|
|
|
|
|
|
F(ngx_http_core_content_phase) {
|
|
printf("content: gecko: %d\n", $r->headers_in->gecko)
|
|
}
|
|
|
|
--- stap_out
|
|
rewrite: gecko: 0
|
|
content: gecko: 1
|
|
|
|
--- response_body
|
|
User-Agent: Mozilla/5.0 (Android; Mobile; rv:13.0) Gecko/13.0 Firefox/13.0
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 13: clear Chrome user-agent
|
|
--- config
|
|
location /t {
|
|
more_clear_input_headers User-Agent;
|
|
echo "User-Agent: $http_user_agent";
|
|
}
|
|
|
|
--- request
|
|
GET /t
|
|
|
|
--- more_headers
|
|
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19
|
|
|
|
--- stap
|
|
F(ngx_http_headers_more_exec_input_cmd) {
|
|
printf("rewrite: chrome: %d\n", $r->headers_in->chrome)
|
|
}
|
|
|
|
|
|
F(ngx_http_core_content_phase) {
|
|
printf("content: chrome: %d\n", $r->headers_in->chrome)
|
|
}
|
|
|
|
--- stap_out
|
|
rewrite: chrome: 1
|
|
content: chrome: 0
|
|
|
|
--- response_body
|
|
User-Agent:
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 14: set custom Chrome user-agent
|
|
--- config
|
|
location /t {
|
|
more_set_input_headers "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19";
|
|
echo "User-Agent: $http_user_agent";
|
|
}
|
|
|
|
--- request
|
|
GET /t
|
|
|
|
--- stap
|
|
F(ngx_http_headers_more_exec_input_cmd) {
|
|
printf("rewrite: chrome: %d\n", $r->headers_in->chrome)
|
|
}
|
|
|
|
|
|
F(ngx_http_core_content_phase) {
|
|
printf("content: chrome: %d\n", $r->headers_in->chrome)
|
|
}
|
|
|
|
--- stap_out
|
|
rewrite: chrome: 0
|
|
content: chrome: 1
|
|
|
|
--- response_body
|
|
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 15: clear Safari (Mac OS X) user-agent
|
|
--- config
|
|
location /t {
|
|
more_clear_input_headers User-Agent;
|
|
echo "User-Agent: $http_user_agent";
|
|
}
|
|
|
|
--- request
|
|
GET /t
|
|
|
|
--- more_headers
|
|
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8
|
|
|
|
--- stap
|
|
F(ngx_http_headers_more_exec_input_cmd) {
|
|
printf("rewrite: safari: %d\n", $r->headers_in->safari)
|
|
}
|
|
|
|
|
|
F(ngx_http_core_content_phase) {
|
|
printf("content: safari: %d\n", $r->headers_in->safari)
|
|
}
|
|
|
|
--- stap_out
|
|
rewrite: safari: 1
|
|
content: safari: 0
|
|
|
|
--- response_body
|
|
User-Agent:
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 16: set custom Safari user-agent
|
|
--- config
|
|
location /t {
|
|
more_set_input_headers "User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8";
|
|
echo "User-Agent: $http_user_agent";
|
|
}
|
|
|
|
--- request
|
|
GET /t
|
|
|
|
--- stap
|
|
F(ngx_http_headers_more_exec_input_cmd) {
|
|
printf("rewrite: safari: %d\n", $r->headers_in->safari)
|
|
}
|
|
|
|
|
|
F(ngx_http_core_content_phase) {
|
|
printf("content: safari: %d\n", $r->headers_in->safari)
|
|
}
|
|
|
|
--- stap_out
|
|
rewrite: safari: 0
|
|
content: safari: 1
|
|
|
|
--- response_body
|
|
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 17: clear Konqueror user-agent
|
|
--- config
|
|
location /t {
|
|
more_clear_input_headers User-Agent;
|
|
echo "User-Agent: $http_user_agent";
|
|
}
|
|
|
|
--- request
|
|
GET /t
|
|
|
|
--- more_headers
|
|
User-Agent: Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.10 (like Gecko) (Kubuntu)
|
|
|
|
--- stap
|
|
F(ngx_http_headers_more_exec_input_cmd) {
|
|
printf("rewrite: konqueror: %d\n", $r->headers_in->konqueror)
|
|
}
|
|
|
|
|
|
F(ngx_http_core_content_phase) {
|
|
printf("content: konqueror: %d\n", $r->headers_in->konqueror)
|
|
}
|
|
|
|
--- stap_out
|
|
rewrite: konqueror: 1
|
|
content: konqueror: 0
|
|
|
|
--- response_body
|
|
User-Agent:
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 18: set custom Konqueror user-agent
|
|
--- config
|
|
location /t {
|
|
more_set_input_headers "User-Agent: Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.10 (like Gecko) (Kubuntu)";
|
|
echo "User-Agent: $http_user_agent";
|
|
}
|
|
|
|
--- request
|
|
GET /t
|
|
|
|
--- stap
|
|
F(ngx_http_headers_more_exec_input_cmd) {
|
|
printf("rewrite: konqueror: %d\n", $r->headers_in->konqueror)
|
|
}
|
|
|
|
|
|
F(ngx_http_core_content_phase) {
|
|
printf("content: konqueror: %d\n", $r->headers_in->konqueror)
|
|
}
|
|
|
|
--- stap_out
|
|
rewrite: konqueror: 0
|
|
content: konqueror: 1
|
|
|
|
--- response_body
|
|
User-Agent: Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.10 (like Gecko) (Kubuntu)
|
|
--- no_error_log
|
|
[error]
|