some http header changes

This commit is contained in:
JT Smith 2006-04-18 14:22:42 +00:00
parent 4a3dab3ddb
commit e8c073b9df
23 changed files with 206 additions and 54 deletions

View file

@ -84,7 +84,7 @@ sub contentHandler {
my $session = WebGUI::Session->open($s->dir_config('WebguiRoot'),$r->dir_config('WebguiConfig'),$r, $s);
if ($session->env->get("HTTP_X_MOZ") eq "prefetch") { # browser prefetch is a bad thing
$session->http->setStatus("403","We don't allow prefetch, because it increases bandwidth, hurts stats, and can break web sites.");
$session->http->getHeader;
$session->http->sendHeader;
} elsif ($session->setting->get("specialState") eq "upgrading") {
upgrading($session);
} elsif ($session->setting->get("specialState") eq "init") {
@ -104,7 +104,7 @@ sub contentHandler {
$output = page($session);
}
$session->http->setCookie("wgSession",$session->var->{_var}{sessionId}) unless $session->var->{_var}{sessionId} eq $session->http->getCookies->{"wgSession"};
$session->http->getHeader();
$session->http->sendHeader();
unless ($session->http->isRedirect()) {
$session->output->print($output);
if ($session->errorHandler->canShowDebug()) {
@ -255,7 +255,7 @@ The current WebGUI::Session object.
sub setup {
my $session = shift;
require WebGUI::Operation::WebGUI;
$session->http->getHeader;
$session->http->sendHeader;
$session->output->print(WebGUI::Operation::WebGUI::www_setup($session));
}
@ -346,7 +346,7 @@ The current WebGUI::Session object.
sub upgrading {
my $session = shift;
$session->http->getHeader;
$session->http->sendHeader;
open(FILE,"<".$session->config->getWebguiRoot."/docs/maintenance.html");
while (<FILE>) {
$session->output->print($_);

View file

@ -1949,7 +1949,7 @@ sub www_manageAssets {
my $out = $self->getAdminConsole->render($self->getAdminConsole->render("~~~"));
my ($head, $foot) = split("~~~",$out);
$self->session->style->sent(1);
$self->session->http->getHeader;
$self->session->http->sendHeader;
$self->session->output->print($head);
$self->session->output->print('<div style="text-align: right;"><a href="'.$self->getUrl("func=manageAssets;manage=1").'">Manage</a> | <a href="'.$self->getUrl("func=manageAssets;search=1").'">Search</a></div>',1);
if ($self->session->scratch->get("manageAssetsSearchToggle")) {

View file

@ -319,6 +319,7 @@ sub www_edit {
sub www_view {
my $self = shift;
return $self->session->privilege->insufficient() unless ($self->canView);
$self->session->http->setCacheControl($self->get("visitorCacheTimeout")) if ($self->session->user->userId eq "1");
return $self->session->style->process($self->view,$self->getParent->getValue("styleTemplateId"));
}

View file

@ -1021,7 +1021,8 @@ sub www_view {
return $self->session->privilege->noAccess() unless $self->canView;
my $check = $self->checkView;
return $check if (defined $check);
$self->session->http->getHeader;
$self->session->http->setCacheControl($self->get("visitorCacheTimeout")) if ($self->session->user->userId eq "1");
$self->session->http->sendHeader;
$self->prepareView;
my $style = $self->getParent->processStyle("~~~");
my ($head, $foot) = split("~~~",$style);

View file

@ -18,7 +18,6 @@ use strict;
use WebGUI::Asset;
use WebGUI::Asset::Template;
use WebGUI::Macro;
use HTTP::Date;
our @ISA = qw(WebGUI::Asset);
@ -203,12 +202,7 @@ sub www_view {
my $self = shift;
my $mimeType=$self->getValue('mimeType');
$self->session->http->setMimeType($mimeType || 'text/html');
my $request = $self->session->request;
if (defined $request && $request->protocol =~ /(\d\.\d)/ && $1 >= 1.1){
$request->header_out('Cache-Control', "max-age=" . $self->get("cacheTimeout"));
} elsif (defined $request) {
$request->header_out('Expires', HTTP::Date::time2str(time + $self->get("cacheTimeout")));
}
$self->session->http->setCacheControl($self->get("cacheTimeout"));
return $self->view(1);
}

View file

@ -537,7 +537,7 @@ sub www_view {
my $self = shift;
my $check = $self->checkView;
return $check if (defined $check);
$self->session->http->getHeader;
$self->session->http->sendHeader;
$self->prepareView;
my $style = $self->processStyle("~~~");
my ($head, $foot) = split("~~~",$style);

View file

@ -371,6 +371,19 @@ sub www_deleteFile {
return $self->www_edit;
}
#-------------------------------------------------------------------
=head2 www_view ()
See WebGUI::Asset::Wobject::www_view() for details.
=cut
sub www_view {
my $self = shift;
$self->session->http->setCacheControl($self->get("cacheTimeout"));
$self->SUPER::www_view(@_);
}
1;

View file

@ -1179,7 +1179,8 @@ sub _xml_encode {
sub www_view {
my $self = shift;
my $disableCache = ($self->session->form->process("sortBy") ne "");
return $self->SUPER::www_view($disableCache);
$self->session->http->setCacheControl($self->get("visitorCacheTimeout")) if ($self->session->user->userId eq "1" && !$disableCache);
return $self->SUPER::www_view(@_);
}

View file

@ -509,6 +509,20 @@ sub view {
}
#-------------------------------------------------------------------
=head2 www_view ()
See WebGUI::Asset::Wobject::www_view() for details.
=cut
sub www_view {
my $self = shift;
$self->session->http->setCacheControl($self->get("visitorCacheTimeout")) if ($self->session->user->userId eq "1");
$self->SUPER::www_view(@_);
}
1;

View file

@ -219,6 +219,20 @@ sub view {
}
#-------------------------------------------------------------------
=head2 www_view ()
See WebGUI::Asset::Wobject::www_view() for details.
=cut
sub www_view {
my $self = shift;
$self->session->http->setCacheControl($self->get("visitorCacheTimeout")) if ($self->session->user->userId eq "1");
$self->SUPER::www_view(@_);
}
1;

View file

@ -286,7 +286,7 @@ sub www_view {
my $ad = $adSpace->displayImpression if (defined $adSpace);
$out =~ s/\Q$code/$ad/ges;
}
$self->session->http->getHeader;
$self->session->http->sendHeader;
$self->session->output->print($out, 1);
return "chunked";
}

View file

@ -1075,6 +1075,20 @@ sub view {
return $out;
}
#-------------------------------------------------------------------
=head2 www_view ()
See WebGUI::Asset::Wobject::www_view() for details.
=cut
sub www_view {
my $self = shift;
$self->session->http->setCacheControl($self->get("visitorCacheTimeout")) if ($self->session->user->userId eq "1");
$self->SUPER::www_view(@_);
}
#-------------------------------------------------------------------
sub www_viewDetail {
my $self = shift;

View file

@ -163,6 +163,20 @@ sub view {
return $out;
}
#-------------------------------------------------------------------
=head2 www_view ()
See WebGUI::Asset::Wobject::www_view() for details.
=cut
sub www_view {
my $self = shift;
$self->session->http->setCacheControl($self->get("visitorCacheTimeout")) if ($self->session->user->userId eq "1");
$self->SUPER::www_view(@_);
}
1;

View file

@ -140,4 +140,18 @@ sub view {
}
#-------------------------------------------------------------------
=head2 www_view ()
See WebGUI::Asset::Wobject::www_view() for details.
=cut
sub www_view {
my $self = shift;
$self->session->http->setCacheControl($self->get("cacheTimeout"));
$self->SUPER::www_view(@_);
}
1;

View file

@ -913,5 +913,19 @@ sub view {
return $out;
}
#-------------------------------------------------------------------
=head2 www_view ()
See WebGUI::Asset::Wobject::www_view() for details.
=cut
sub www_view {
my $self = shift;
$self->session->http->setCacheControl($self->get("cacheTimeout"));
$self->SUPER::www_view(@_);
}
1;

View file

@ -326,7 +326,7 @@ sub view {
#use Data::Dumper; return '<pre>'.Dumper($var).'</pre>';
my $out = $self->processTemplate($var,undef,$self->{_viewTemplate});
if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) {
WebGUI::Cache->new($self->session,"view_".$self->getId)->set($out,$self->get("visitorCacheTimeout"));
WebGUI::Cache->new($self->session,"view_".$self->getId)->set($out,$self->get("cacheTimeout"));
}
return $out;
}
@ -491,5 +491,20 @@ sub _processQuery {
}
return \%var;
}
#-------------------------------------------------------------------
=head2 www_view ()
See WebGUI::Asset::Wobject::www_view() for details.
=cut
sub www_view {
my $self = shift;
$self->session->http->setCacheControl($self->get("cacheTimeout"));
$self->SUPER::www_view(@_);
}
1;

View file

@ -619,6 +619,20 @@ sub _createRSSURLs{
}
#-------------------------------------------------------------------
=head2 www_view ()
See WebGUI::Asset::Wobject::www_view() for details.
=cut
sub www_view {
my $self = shift;
$self->session->http->setCacheControl($self->get("cacheTimeout"));
$self->SUPER::www_view(@_);
}
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=head2 www_viewRSS090()

View file

@ -196,11 +196,11 @@ sub www_exportGenerate {
return $self->session->privilege->insufficient() unless ($self->session->user->isInGroup(13));
# This routine is called in an IFRAME and prints status output directly to the browser.
$|++; # Unbuffered data output
$self->session->output->print($self->session->http->getHeader());
$self->session->http->sendHeader;
my $startTime =$self->session->datetime->time();
my $error = $self->checkExportPath();
if ($error) {
$self->session->output->print($error);
$self->session->output->print($error,1);
return;
}
my $i18n = WebGUI::International->new($self->session, 'Asset');

View file

@ -107,7 +107,7 @@ sub www_setup {
$session->setting->set('companyURL',$session->form->url("companyURL"));
$session->setting->set('companyEmail',$session->form->email("companyEmail"));
$session->http->setRedirect($session->url->gateway());
$session->http->getHeader;
$session->http->sendHeader;
return "";
} else {
$output .= '<legend align="left">Admin Account</legend>';

View file

@ -190,7 +190,7 @@ sub fatal {
Apache2::RequestUtil->request->content_type('text/html') if ($self->session->request);
$self->getLogger->fatal($message);
$self->getLogger->debug("Stack trace for FATAL ".$message."\n".$self->getStackTrace());
$self->session->http->getHeader if ($self->session->request);
$self->session->http->sendHeader if ($self->session->request);
unless ($self->canShowDebug()) {
#NOTE: You can't internationalize this because with some types of errors that would cause an infinite loop.
$self->session->output->print("<h1>Problem With Request</h1>

View file

@ -18,6 +18,7 @@ package WebGUI::Session::Http;
use strict;
use Apache2::Cookie;
use APR::Request::Apache2;
use HTTP::Date;
=head1 NAME
@ -33,8 +34,9 @@ This package allows the manipulation of HTTP protocol information.
my $http = WebGUI::Session::Http->new($session);
$http->sendHeader();
$cookies = $http->getCookies();
$header = $http->getHeader();
$mimetype = $http->getMimeType();
$code = $http->getStatus();
$boolean = $http->isRedirect();
@ -87,37 +89,6 @@ sub getCookies {
}
#-------------------------------------------------------------------
=head2 getHeader ( )
Generates an HTTP header.
=cut
sub getHeader {
my $self = shift;
return undef if ($self->{_http}{noHeader});
return undef unless $self->session->request;
my %params;
if ($self->isRedirect()) {
$self->session->request->headers_out->set(Location => $self->{_http}{location});
$self->session->request->status(301);
} else {
$self->session->request->content_type($self->{_http}{mimetype} || "text/html");
if ($self->session->setting->get("preventProxyCache")) {
$self->session->request->headers_out->set(Expires => "-1d");
}
if ($self->{_http}{filename}) {
$self->session->request->headers_out->set('Content-Disposition' => qq!attachment; filename="$self->{_http}{filename}"!);
}
}
#$params{"-cookie"} = $self->{_http}{cookie};
$self->session->request->status_line($self->getStatus().' '.$self->{_http}{statusDescription});
return;
}
#-------------------------------------------------------------------
=head2 getMimeType ( )
@ -180,6 +151,36 @@ sub new {
}
#-------------------------------------------------------------------
=head2 sendHeader ( )
Generates and sends HTTP headers.
=cut
sub sendHeader {
my $self = shift;
return undef if ($self->{_http}{noHeader});
return undef unless $self->session->request;
my %params;
if ($self->isRedirect()) {
$self->session->request->headers_out->set(Location => $self->{_http}{location});
$self->session->request->status(301);
} else {
$self->session->request->content_type($self->{_http}{mimetype} || "text/html");
if ($self->session->setting->get("preventProxyCache")) {
$self->session->request->headers_out->set(Expires => "-1d");
}
if ($self->{_http}{filename}) {
$self->session->request->headers_out->set('Content-Disposition' => qq!attachment; filename="$self->{_http}{filename}"!);
}
}
$self->session->request->status_line($self->getStatus().' '.$self->{_http}{statusDescription});
return;
}
#-------------------------------------------------------------------
=head2 session ( )
@ -195,6 +196,33 @@ sub session {
#-------------------------------------------------------------------
=head2 setCacheControl ( timeout )
Sets the cache control headers.
=head3 timeout
Either the number of seconds until the cache expires, or the word "none" to disable cache completely for this request.
=cut
sub setCacheControl {
my $self = shift;
my $timeout = shift;
my $request = $self->session->request;
if (defined $request) {
if ($timeout eq "none" || $self->session->setting->get("preventProxyCache")) {
$self->session->request->no_cache(1);
} elsif ($request->protocol =~ /(\d\.\d)/ && $1 >= 1.1){
$request->header_out('Cache-Control', "max-age=" . $timeout);
} else {
$request->header_out('Expires', HTTP::Date::time2str(time + $self->get("cacheTimeout")));
}
}
}
#-------------------------------------------------------------------
=head2 setCookie ( name, value [ , timeToLive ] )
Sends a cookie to the browser.

View file

@ -187,7 +187,7 @@ if ($self->session->user->isInGroup(2)) {
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate, max-age=0" />
<meta http-equiv="Expires" content="0" />
';
$self->session->request->no_cache(1) if ($self->session->request);
$self->session->http->setCacheControl("none");
}
my $style = WebGUI::Asset::Template->new($self->session,$templateId);
my $output;