Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: add_header и позитивные ответы
Igor Sysoev пишет:
On Fri, Oct 09, 2009 at 04:31:44PM +0100, Valery Kholodkov wrote:
Есть ли какая-нибудь объективная причина, по которой директива add_header в
nginx добавляет заголовки только к ответам с кодами 200, 204, 301, 302 и 304?
В чем концептуальное отличие этих кодов, скажем, от всех остальных 2xx кодов?
Так сложилось исторически. В принципе, можно разрешить добавлять
заголовки к другим ответам, кроме заголовков expires.
Подойдет ли для этого прилагаемый патч?
--
Best regards,
Valery Kholodkov
diff -Naur nginx-0.8.19/src/http/modules/ngx_http_headers_filter_module.c
nginx-0.8.19-mine/src/http/modules/ngx_http_headers_filter_module.c
--- nginx-0.8.19/src/http/modules/ngx_http_headers_filter_module.c
2009-06-02 18:09:44.000000000 +0200
+++ nginx-0.8.19-mine/src/http/modules/ngx_http_headers_filter_module.c
2009-10-09 19:50:02.000000000 +0200
@@ -130,6 +130,7 @@
static ngx_http_output_header_filter_pt ngx_http_next_header_filter;
+static ngx_str_t ngx_http_header_expires = ngx_string("Expires");
static ngx_int_t
ngx_http_headers_filter(ngx_http_request_t *r)
@@ -142,12 +143,7 @@
conf = ngx_http_get_module_loc_conf(r, ngx_http_headers_filter_module);
if ((conf->expires == NGX_HTTP_EXPIRES_OFF && conf->headers == NULL)
- || r != r->main
- || (r->headers_out.status != NGX_HTTP_OK
- && r->headers_out.status != NGX_HTTP_NO_CONTENT
- && r->headers_out.status != NGX_HTTP_MOVED_PERMANENTLY
- && r->headers_out.status != NGX_HTTP_MOVED_TEMPORARILY
- && r->headers_out.status != NGX_HTTP_NOT_MODIFIED))
+ || r != r->main)
{
return ngx_http_next_header_filter(r);
}
@@ -578,6 +574,12 @@
value = cf->args->elts;
+ if (ngx_strcasecmp(value[1].data, ngx_http_header_expires.data) != 0) {
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
+ "Expires header must be added by explicit
\"expires\" directive");
+ return NGX_CONF_ERROR;
+ }
+
if (hcf->headers == NULL) {
hcf->headers = ngx_array_create(cf->pool, 1,
sizeof(ngx_http_header_val_t));
|