ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
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));


 




Copyright © Lexa Software, 1996-2009.