mirror of
https://github.com/nginx/nginx.git
synced 2025-06-12 21:52:41 +08:00
introduce 494 code "Request Header Too Large"
This commit is contained in:
parent
6586e82108
commit
26cf2c96ea
@ -978,10 +978,13 @@ ngx_http_process_request_headers(ngx_event_t *rev)
|
|||||||
if (rv == NGX_DECLINED) {
|
if (rv == NGX_DECLINED) {
|
||||||
p = r->header_name_start;
|
p = r->header_name_start;
|
||||||
|
|
||||||
|
r->lingering_close = 1;
|
||||||
|
|
||||||
if (p == NULL) {
|
if (p == NULL) {
|
||||||
ngx_log_error(NGX_LOG_INFO, c->log, 0,
|
ngx_log_error(NGX_LOG_INFO, c->log, 0,
|
||||||
"client sent too large request");
|
"client sent too large request");
|
||||||
ngx_http_finalize_request(r, NGX_HTTP_BAD_REQUEST);
|
ngx_http_finalize_request(r,
|
||||||
|
NGX_HTTP_REQUEST_HEADER_TOO_LARGE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -995,7 +998,9 @@ ngx_http_process_request_headers(ngx_event_t *rev)
|
|||||||
ngx_log_error(NGX_LOG_INFO, c->log, 0,
|
ngx_log_error(NGX_LOG_INFO, c->log, 0,
|
||||||
"client sent too long header line: \"%*s\"",
|
"client sent too long header line: \"%*s\"",
|
||||||
len, r->header_name_start);
|
len, r->header_name_start);
|
||||||
ngx_http_finalize_request(r, NGX_HTTP_BAD_REQUEST);
|
|
||||||
|
ngx_http_finalize_request(r,
|
||||||
|
NGX_HTTP_REQUEST_HEADER_TOO_LARGE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,9 @@
|
|||||||
/* The special code to close connection without any response */
|
/* The special code to close connection without any response */
|
||||||
#define NGX_HTTP_CLOSE 444
|
#define NGX_HTTP_CLOSE 444
|
||||||
|
|
||||||
#define NGX_HTTP_NGINX_CODES 495
|
#define NGX_HTTP_NGINX_CODES 494
|
||||||
|
|
||||||
|
#define NGX_HTTP_REQUEST_HEADER_TOO_LARGE 494
|
||||||
|
|
||||||
#define NGX_HTTPS_CERT_ERROR 495
|
#define NGX_HTTPS_CERT_ERROR 495
|
||||||
#define NGX_HTTPS_NO_CERT 496
|
#define NGX_HTTPS_NO_CERT 496
|
||||||
|
@ -201,6 +201,16 @@ static char ngx_http_error_416_page[] =
|
|||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
static char ngx_http_error_494_page[] =
|
||||||
|
"<html>" CRLF
|
||||||
|
"<head><title>400 Request Header Or Cookie Too Large</title></head>"
|
||||||
|
CRLF
|
||||||
|
"<body bgcolor=\"white\">" CRLF
|
||||||
|
"<center><h1>400 Bad Request</h1></center>" CRLF
|
||||||
|
"<center>Request Header Or Cookie Too Large</center>" CRLF
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
static char ngx_http_error_495_page[] =
|
static char ngx_http_error_495_page[] =
|
||||||
"<html>" CRLF
|
"<html>" CRLF
|
||||||
"<head><title>400 The SSL certificate error</title></head>"
|
"<head><title>400 The SSL certificate error</title></head>"
|
||||||
@ -315,6 +325,7 @@ static ngx_str_t ngx_http_error_pages[] = {
|
|||||||
#define NGX_HTTP_LAST_LEVEL_400 417
|
#define NGX_HTTP_LAST_LEVEL_400 417
|
||||||
#define NGX_HTTP_LEVEL_400 (NGX_HTTP_LAST_LEVEL_400 - 400)
|
#define NGX_HTTP_LEVEL_400 (NGX_HTTP_LAST_LEVEL_400 - 400)
|
||||||
|
|
||||||
|
ngx_string(ngx_http_error_494_page), /* 494, request header too large */
|
||||||
ngx_string(ngx_http_error_495_page), /* 495, https certificate error */
|
ngx_string(ngx_http_error_495_page), /* 495, https certificate error */
|
||||||
ngx_string(ngx_http_error_496_page), /* 496, https no certificate */
|
ngx_string(ngx_http_error_496_page), /* 496, https no certificate */
|
||||||
ngx_string(ngx_http_error_497_page), /* 497, http to https */
|
ngx_string(ngx_http_error_497_page), /* 497, http to https */
|
||||||
@ -440,6 +451,7 @@ ngx_http_special_response_handler(ngx_http_request_t *r, ngx_int_t error)
|
|||||||
case NGX_HTTP_TO_HTTPS:
|
case NGX_HTTP_TO_HTTPS:
|
||||||
case NGX_HTTPS_CERT_ERROR:
|
case NGX_HTTPS_CERT_ERROR:
|
||||||
case NGX_HTTPS_NO_CERT:
|
case NGX_HTTPS_NO_CERT:
|
||||||
|
case NGX_HTTP_REQUEST_HEADER_TOO_LARGE:
|
||||||
r->err_status = NGX_HTTP_BAD_REQUEST;
|
r->err_status = NGX_HTTP_BAD_REQUEST;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user