You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by eps com estem <gg...@mixmail.com> on 2005/11/07 11:45:43 UTC

ETAG err_header_out

Hi there, i'm just changing the web pages served with my mp2+libapreq2+mod_xslt2, and to
inform that these pages has been modified i was used to use the $r->err_headers_out method
to avoid any caching procedure.

However, something is not working since the HTTP server is responding a 304 not modified
state. Evaluating the HTTP headers i can observe that the problem is the ETAG entity, that
is shown to not to be changed.

If i force the page refresh with the browser (MAJ.+reload) then i get the right page, but
this is something that users doesn't have to known, so it's not a valid solution.




------------------------------
This is the headers i put in the appopiate handler:

$r->err_headers_out->add('Pragma' => "no-cache");
$r->err_headers_out->add('Cache-control' => "max-age=0");
$r->err_headers_out->add('Cache-control' => "no-cache");
$r->err_headers_out->add('Cache-control' => "must-revalidate");
$r->err_headers_out->add('Expires' => "-1");
return Apache2::Const::DECLINED;




------------------------------
This is the HTTP negotation for http://localhost/camandules.info/main.xml



GET /camandules.info/main.xml HTTP/1.1

Host: localhost

User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051010
Firefox/1.0.7 (Ubuntu package 1.0.7)

Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

Accept-Language: en-us,en;q=0.5

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Connection: keep-alive

Referer: http://localhost/camandules.info/article_new.xml

Cookie: blogum=blogum#5109514559015945155995555511; blogum_counter_sesion=1;
blogum_counter_pages=main#

If-Modified-Since: Tue, 05 Jul 2005 06:25:08 GMT

If-None-Match: "1bcbb8-ca-25467900"

Cache-Control: max-age=0



HTTP/1.x 304 Not Modified

Date: Mon, 07 Nov 2005 10:46:50 GMT

Server: mod-xslt/1.3.8 Apache/2.0.55 (Unix) mod_apreq2-20050712/2.1.3-dev mod_perl/2.0.1
Perl/v5.8.7

Connection: Keep-Alive

Keep-Alive: timeout=15, max=83

Etag: "1bcbb8-ca-25467900"

Expires: -1

Cache-Control: max-age=0, no-cache, must-revalidate




------------------------------
So the server is not seeing that the docs to be served are actually posterior than july.

Additionally, although changing the ETAG is not a good idea (which value i put?), i tried
it. The ->unset method is not working, and the ->set method is indeed acting as the ->add
method (for example $r->err_headers_out->set('Etag' => "-1");).

In all cases, the etag value is again sended.

Any idea of what can i do to avoid the NOT MODIFIED state?? Thanks!
---------------------------------------------------------
Juega y ll�vate una PS2 two: http://juegos.ya.com/consolas_y_pc/2005/09/concurso-ps2.html
Ya.com ADSL Navega y habla 24h 
ADSL Alta Velocidad + Llamadas Nacionales y Locales + Router Wi-Fi + Cuota Alta. Todo por 29,95�/mes+IVA. 
http://acceso.ya.com/ADSLllamadas/4mb

Re: ETAG err_header_out

Posted by Geoffrey Young <ge...@modperlcookbook.org>.
> Additionally, although changing the ETAG is not a good idea (which value i put?), i tried
> it. The ->unset method is not working, and the ->set method is indeed acting as the ->add
> method (for example $r->err_headers_out->set('Etag' => "-1");).
> 
> In all cases, the etag value is again sended.

try adding this

  $r->notes->set('no-etag' => 1);

if it doesn't work from your content handler you might need to move this to
a fixup handler to make sure it's set before apache sends the 304.

--Geoff