You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by "Frank W. Zammetti" <fz...@omnytex.com> on 2005/05/24 19:13:06 UTC

RE: Fwd: RequestProcessor, cache control, IE bug

On Tue, May 24, 2005 1:01 pm, George.Dinwiddie@wellsfargo.com said:
> I haven't tried it, but it appears to me that the cache headers will be
> inserted if *any* of the noCachePaths differs from the requested path.

D'oh!  I think your right.

I actually want something more like this:

  public void doFilter(ServletRequest request, ServletResponse response,
                       FilterChain filterChain)
                       throws ServletException, IOException {
    String path = ((HttpServletRequest)request).getServletPath();
    boolean pathInCollection = false;
    for (Iterator it = noCachePaths.iterator(); it.hasNext();) {
      String noCachePath = (String)it.next();
      if (path.equalsIgnoreCase(noCachePath)) {
        pathInCollection = true;
      }
    }
    if (!pathInCollection) {
      ((HttpServletResponse)response).setHeader("Pragma", "No-cache");
      ((HttpServletResponse)response).setHeader("Cache-Control",
                                      "no-cache,no-store,max-age=0");
      ((HttpServletResponse)response).setDateHeader("Expires", 1);
    }
    filterChain.doFilter(request, response);
  } // End doFilter().

>  - George

Thanks for pointing that out!  Oddly enough, it worked in my test case,
just a fluke I guess, but wouldn't have for all cases.  Good catch!

-- 
Frank W. Zammetti
Founder and Chief Software Architect
Omnytex Technologies
http://www.omnytex.com

>> -----Original Message-----
>> From: Frank W. Zammetti [mailto:fzlists@omnytex.com]
>> Sent: Tuesday, May 24, 2005 11:47 AM
>> To: Giovanni Santini
>> Cc: dev@struts.apache.org
>> Subject: Re: Fwd: RequestProcessor, cache control, IE bug
>>
>>
>> FYI, I solved this with a filter.  Pretty simple... I intend
>> to load the paths from a config file, but for now this is
>> fine.  If you want to use it, just remove the nocache setting
>> from struts-config and configure this filter in web.xml:
>>
>> ----------------------------------------------------------------------
>>
>> package com.company.app.filters;
>>
>> import java.io.IOException;
>> import java.util.ArrayList;
>> import java.util.Iterator;
>> import javax.servlet.Filter;
>> import javax.servlet.FilterChain;
>> import javax.servlet.FilterConfig;
>> import javax.servlet.http.HttpServletRequest;
>> import javax.servlet.http.HttpServletResponse;
>> import javax.servlet.ServletException;
>> import javax.servlet.ServletRequest;
>> import javax.servlet.ServletResponse;
>>
>> /**
>>  * This filter more or less mimics the cachecontrol Struts RP
>> setting, but
>>  * allows you to set paths that cache headers will NOT be set for.
>>  *
>>  * @author <a href="mailto:fzammetti@omnytex.com">Frank W.
>> Zammetti</a>  */ public class CacheControlFilter implements Filter {
>>
>>   /**
>>    * List of paths to *NOT* set cache headers on.
>>    */
>>   private ArrayList noCachePaths =  new ArrayList();
>>
>>   /**
>>    * Destroy.
>>    */
>>   public void destroy() { } // End destroy.
>>
>>   /**
>>    * Populate the list of paths that cache headers will NOT
>> be set for.
>>    *
>>    * @param  filterConfig     The configuration information
>> for this filter.
>>    * @throws ServletException ServletException.
>>    */
>>   public void init(FilterConfig filterConfig) throws
>> ServletException {
>>     noCachePaths.add("/app/path1.do");
>>     noCachePaths.add("/app/path2.do");
>>     noCachePaths.add("/app/path3.do");
>>   } // End init().
>>
>>
>>   /**
>>    * Set the cache headers to response, where applicable.
>>    *
>>    * @param  request          The current request object.
>>    * @param  response         The current response object.
>>    * @param  filterChain      The current filter chain.
>>    * @throws ServletException ServletException.
>>    * @throws IOException      IOException.
>>    */
>>   public void doFilter(ServletRequest request,
>> ServletResponse response,
>>                        FilterChain filterChain)
>>                        throws ServletException, IOException {
>>     String path = ((HttpServletRequest)request).getServletPath();
>>     for (Iterator it = noCachePaths.iterator(); it.hasNext();) {
>>       String noCachePath = (String)it.next();
>>       if (!path.equalsIgnoreCase(noCachePath)) {
>>         ((HttpServletResponse)response).setHeader("Pragma",
>> "No-cache");
>>         ((HttpServletResponse)response).setHeader("Cache-Control",
>>
>> "no-cache,no-store,max-age=0");
>>         ((HttpServletResponse)response).setDateHeader("Expires", 1);
>>       }
>>     }
>>     filterChain.doFilter(request, response);
>>   } // End doFilter().
>>
>> } // End CacheControlFilter class.
>>
>> ----------------------------------------------------------------------
>>
>> --
>> Frank W. Zammetti
>> Founder and Chief Software Architect
>> Omnytex Technologies
>> http://www.omnytex.com
>>
>> On Tue, May 24, 2005 11:26 am, Giovanni Santini said:
>> > I've to go through the class RequestProcessors
>> > And I'lll send other news
>> > I think this settings has to be possible overwrite in the
>> action with
>> > some methods where it'll be possible make this settings
>> > Best regards
>> >
>> >  On 5/24/05, Frank W. Zammetti <fz...@omnytex.com> wrote:
>> >>
>> >> What a freaky coincidence... I just rolled my app into a new
>> >> environment last night and was having this exact problem. I didn't
>> >> even think of the nocache setting, but sure enough I
>> removed it from
>> >> my struts-config and now my PDFs are working again.
>> >>
>> >> I have the same question as you now though. I don't
>> *believe* there
>> >> is a way to do it per-path within Struts... My idea is to set the
>> >> header myself in my base Action, or else create a filter to do it
>> >> that knows which paths
>> >> to NOT apply it to (since I only have 3-4 like that it's a
>> reasonable
>> >> solution).
>> >>
>> >> If you come up with something better, I would very much appreciate
>> >> hearing about it though. :)
>> >>
>> >> --
>> >> Frank W. Zammetti
>> >> Founder and Chief Software Architect
>> >> Omnytex Technologies
>> >> http://www.omnytex.com
>> >>
>> >> On Tue, May 24, 2005 9:18 am, Giovanni Santini said:
>> >> > ---------- Forwarded message ----------
>> >> > From: Giovanni Santini <gi...@gmail.com>
>> >> > Date: May 24, 2005 3:16 PM
>> >> > Subject: Fwd: RequestProcessor, cache control, IE bug
>> >> > To: dev@struts.apache.org
>> >> >
>> >> > Hi,
>> >> > we have a problem with RequestProcessor when you set
>> nocache set to
>> >> true
>> >> > in
>> >> > struts config file.
>> >> > It sets in http header the Cache-control parameter, and
>> when we try
>> >> > to download a pdf it conflicts with a bug of explorer.
>> How we can
>> >> > have a fine grain in the decision of this parameter in
>> our action?
>> >> > If I set again the cache-control parameter on the
>> action, does it will
>> >> > overwrite the value set in requestProcessor?
>> >> > Do you know which is the best way to fix this problem?
>> >> > In attachment you can find the IE bug!
>> >> > Kind regards
>> >> >
>> >> > "Internet Explorer Cannot Download" Error Message When You Use an
>> >> HTTPS
>> >> > URL
>> >> > to Open an Office Document or PDF File 05/20/2005 09:20 AM
>> >> >
>> >> >
>> http://support.microsoft.com/default.aspx?scid=kb;en-us;812935 Page
>> >> > 1
>> >> of
>> >> 2
>> >> >
>> >> > Article ID : 812935
>> >> >
>> >> > Last Review : April 15, 2004
>> >> >
>> >> > Revision : 2.0
>> >> > *
>> >> >
>> >> > "Internet Explorer Cannot Download" Error Message
>> >> >
>> >> > When You Use an HTTPS URL to Open an Office
>> >> >
>> >> > Document or PDF File
>> >> >
>> >> > SYMPTOMS
>> >> > *
>> >> >
>> >> > When you try to open a Microsoft Office document or a PDF file by
>> >> >
>> >> > typing an HTTPS Uniform Resource Locator (URL) for the
>> document on
>> >> >
>> >> > the Address bar in Internet Explorer 6 Service Pack 1 (SP1), the
>> >> >
>> >> > document may not open, and you may receive the following error
>> >> >
>> >> > message:
>> >> >
>> >> > Internet Explorer cannot download
>> >> > *document.pdf *from *server**
>> >> >
>> >> > CAUSE
>> >> > *
>> >> >
>> >> > This issue may occur if any one or more of the following
>> conditions
>> >> are
>> >> > true:
>> >> >
>> >> > *
>> >> > The *Do not save encrypted pages to disk *check box is
>> selected in
>> >> > Internet Explorer 6.0 SP1.
>> >> >
>> >> > *
>> >> > The server sends the "Cache-Control: No Store" header.
>> >> >
>> >> > *
>> >> > The server sends the "Cache-Control: No Cache" header.*
>> >> >
>> >> > RESOLUTION
>> >> > *
>> >> >
>> >> > A supported fix is now available from Microsoft, but it is only
>> >> intended
>> >> > to
>> >> > correct the problem that is
>> >> >
>> >> > described in this article. Apply it only to computers that are
>> >> > experiencing this specific problem. This fix
>> >> >
>> >> > may receive additional testing. Therefore, if you are
>> not severely
>> >> > affected by this problem, Microsoft
>> >> >
>> >> > recommends that you wait for the next Internet Explorer
>> 6 service
>> >> > pack that contains this fix.
>> >> >
>> >> > To resolve this problem immediately, contact Microsoft Product
>> >> > Support Services to obtain the fix. For a
>> >> >
>> >> > complete list of Microsoft Product Support Services
>> phone numbers
>> >> > and information about support
>> >> >
>> >> > costs, visit the following Microsoft Web site:
>> >> >
>> >> > http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS
>> >> > *
>> >> >
>> >> > NOTE
>> >> > *: In special cases, charges that are ordinarily incurred for
>> >> > support calls may be canceled if a
>> >> >
>> >> > Microsoft Support Professional determines that a specific update
>> >> > will resolve your problem. The typical
>> >> >
>> >> > support costs will apply to additional support questions
>> and issues
>> >> that
>> >> > do
>> >> > not qualify for the specific
>> >> >
>> >> > update in question.
>> >> >
>> >> > The English version of this fix has the file attributes
>> (or later)
>> >> that
>> >> > are
>> >> > listed in the following table. The
>> >> >
>> >> > dates and times for these files are listed in
>> coordinated universal
>> >> time
>> >> > (UTC). When you view the file
>> >> >
>> >> > information, it is converted to local time. To find the
>> difference
>> >> between
>> >> > UTC and local time, use the
>> >> > *
>> >> >
>> >> > Time Zone
>> >> > *tab in the Date and Time tool in Control Panel.
>> >> >
>> >> > Date Time Version Size File name
>> >> > ----------------------------------------------------------
>> >> >
>> >> > 11-Mar-2003 08:42 6.0.2800.1174 585,728 Wininet.dll
>> >> > *
>> >> >
>> >> > WORKAROUND
>> >> > *
>> >> >
>> >> > To work around this problem, make sure that

>> >> > *Do Not Save Encrypted Files *check box is not checked
>> >> >
>> >> > and that the server does not send the "Cache-Control: No
>> Store" or
>> >> > the
>> >> > "Cache-Control: No Cache"
>> >> >
>> >> > header.
>> >> >
>> >> > You may also be able to work around this problem by
>> using an HREF
>> >> > to
>> >> load
>> >> > the document.
>> >> > *
>> >> >
>> >> > Note
>> >> > *This method does not work if the server uses the
>> "Cache-Control:
>> >> > No Cache"
>> >> > header.*
>> >> >
>> >> > STATUS
>> >> > *
>> >> >
>> >> > Microsoft has confirmed that this is a problem in the Microsoft
>> >> products
>> >> > that are listed at the beginning
>> >> >
>> >> > of this article.
>> >> > *
>> >> >
>> >> > APPLIES TO
>> >> > *
>> >> >
>> >> > *
>> >> > Microsoft Internet Explorer 6.0 Service Pack 1*
>> >> >
>> >> > Keywords:
>> >> > *kberrmsg kbfix kbhttp kbie600presp2fix kbinetdev kbqfe kbhtml
>> >> kbbrowse
>> >> > KB812935
>> >> >
>> >> > "Internet Explorer Cannot Download" Error Message When You Use an
>> >> HTTPS
>> >> > URL
>> >> > to Open an Office Document or PDF File 05/20/2005 09:20 AM
>> >> >
>> >> >
>> http://support.microsoft.com/default.aspx?scid=kb;en-us;812935 Page
>> >> > 2
>> >> of
>> >> 2
>> >> >
>> >> > (c)2005 Microsoft Corporation. All rights reserved.
>> >> >
>> >> > On 5/24/05, Joe Germuska <Jo...@germuska.com> wrote:
>> >> >>
>> >> >> At 10:39 PM -0400 5/23/05, Frank W. Zammetti wrote:
>> >> >> >Hey all... I was working with a user who is using
>> AjaxTags, and
>> >> >> >he raised something that I wanted to check with you guys on...
>> >> >> >
>> >> >> >What is the difference between struts-html.tld and
>> >> >> >struts-html-1.1.tld? The user indicated that the 1.1 version
>> >> >> >provides servlet 2.4 compatibility. Is this accurate?
>> >> >>
>> >> >> No. If you're talking about the files such as can be retrieved
>> >> >> from
>> http://www.ibiblio.org/maven/struts/tlds/struts-html-1.1.tld
>> >> >> , the only reason those have version numbers is because
>> they are
>> >> >> part of a maven repository. If you look inside the file, you'll
>> >> >> see that it has a DTD declaration that looks like this:
>> >> >>
>> >> >> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag
>> >> >> Library 1.1//EN" "
>> >> >> http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"<
>> >> http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd%22>
>> >> >> >
>> >> >>
>> >> >> , while Servlet 2.4 (or rather JSP 2.0 ) TLD files use
>> XML Schema
>> >> >> and have an opening element that looks like this:
>> >> >>
>> >> >> <taglib xmlns=" http://java.sun.com/xml/ns/j2ee" xmlns:xsi="
>> >> >> http://www.w3.org/2001/XMLSchema-instance"
>> >> >>
>> >> >> xsi:schemaLocation="
>> >> http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd
>> >> >> "
>> >> >> version="2.0">
>> >> >>
>> >> >> To be honest, I'm not sure what part of Maven retrieves
>> TLD files
>> >> >> from the repository, but the surest way to know is to
>> look inside
>> >> >> the file.
>> >> >>
>> >> >> However, you can use JSP 2.0 with the non-EL tags with
>> no problem.
>> >> >> (At least, I haven't had any yet.)
>> >> >>
>> >> >> Joe
>> >> >>
>> >> >> --
>> >> >> Joe Germuska
>> >> >> Joe@Germuska.com
>> >> >> http://blog.germuska.com
>> >> >> "Narrow minds are weapons made for mass destruction" -The Ex
>> >> >>
>> >> >>
>> ------------------------------------------------------------------
>> >> >> ---
>> >> >> To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
>> >> >> For additional commands, e-mail: dev-help@struts.apache.org
>> >> >>
>> >> >>
>> >> >
>> >> >
>> >> > --
>> >> > Graag gedaan
>> >> > _____________________________
>> >> > Giovanni Santini
>> >> > EDS Italy
>> >> > ABN-AMRO Working Capital OLS
>> >> > Loc: Kostverlorenhof 2 AK8000
>> >> > 1183HE Amstelveen (Amsterdam)
>> >> > The Netherlands
>> >> > Mobile: +31 (0) 652245333
>> >> > Tel: +31 (0) 203437771
>> >> > Fax: +31 (0) 206299404
>> >> >
>> >> >
>> >> > --
>> >> > Graag gedaan
>> >> > _____________________________
>> >> > Giovanni Santini
>> >> > EDS Italy
>> >> > ABN-AMRO Working Capital OLS
>> >> > Loc: Kostverlorenhof 2 AK8000
>> >> > 1183HE Amstelveen (Amsterdam)
>> >> > The Netherlands
>> >> > Mobile: +31 (0) 652245333
>> >> > Tel: +31 (0) 203437771
>> >> > Fax: +31 (0) 206299404
>> >> >
>> >> >
>> >> >
>> >> > --
>> >> > Graag gedaan
>> >> > _____________________________
>> >> > Giovanni Santini
>> >> > EDS Italy
>> >> > ABN-AMRO Working Capital OLS
>> >> > Loc: Kostverlorenhof 2 AK8000
>> >> > 1183HE Amstelveen (Amsterdam)
>> >> > The Netherlands
>> >> > Mobile: +31 (0) 652245333
>> >> > Tel: +31 (0) 203437771
>> >> > Fax: +31 (0) 206299404
>> >> >
>> >>
>> >>
>> >
>> >
>> > --
>> > Graag gedaan
>> > _____________________________
>> > Giovanni Santini
>> > EDS Italy
>> > ABN-AMRO Working Capital OLS
>> > Loc: Kostverlorenhof 2 AK8000
>> > 1183HE Amstelveen (Amsterdam)
>> > The Netherlands
>> > Mobile: +31 (0) 652245333
>> > Tel: +31 (0) 203437771
>> > Fax: +31 (0) 206299404
>> >
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
>> For additional commands, e-mail: dev-help@struts.apache.org
>>
>>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


RE: Fwd: RequestProcessor, cache control, IE bug

Posted by "Frank W. Zammetti" <fz...@omnytex.com>.
Not to beat a dead horse, but the code I posted yesterday was broke in a
couple of ways, but I believe I have resolved them all now.  In case
anyone has interest, please contact me for the updated code (probably not
in good form to repost it now to the list, so please eMail me privately).

-- 
Frank W. Zammetti
Founder and Chief Software Architect
Omnytex Technologies
http://www.omnytex.com


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org