Could you please file a bug report? Including the fix :).

Thank you

Pierre
--
Pierre Frisch
[EMAIL PROTECTED]


On Apr 18, 2008, at 21:34, Chuck Hill wrote:

That is a great bug, isn't it! I have enjoyed it many times over the years. Here is a class that I wrote that seems to fix this. It is for 5.3, can be trimmed for 5.4. Add this to your project, then add this method to Application:


   public WOResponse createResponseInContext(WOContext context)
   {
       return new Response();
   }




package net.global_village.woextensions;

import com.webobjects.appserver.*;
import com.webobjects.foundation.*;



/**
* Fixes and hacks for WOResponse.
* <p>
* Creates a response configured to use UTF-8 for the <code>defaultFormValueEncoding()</code>.
* </p>
* <p>
* Prevents disabling client caching for downloads by IE to fix the bug with IE that causes problems when displaying * content that cannot be displayed inline in the browswer (pdf files, for example). This was a known bug in IE 4.0 and
* is reported fixed by MS:
* 
http://support.microsoft.com/support/kb/articles/Q231/2/96.ASP?LN=EN-US&SD=gn&FR=0&qry=Internet%20Explorer%20cannot%20download&rnk=19&src=DHCS_MSPSS_gn_SRCH&SPR=IE
* "When you try to download a .pdf file from a Web site that uses the Hypertext Transfer Protocol (HTTP) "Cache-Control = * 'no-cache'" directive, Internet Explorer may generate the following error message: Internet Explorer cannot down load
* from the Internet site File_name from Computer_name."
* </p>
*
* @author Copyright (c) 2001-2005 Global Village Consulting, Inc. All rights reserved. * This software is published under the terms of the Educational Community License (ECL) version 1.0, * a copy of which has been included with this distribution in the LICENSE.TXT file.
*/
public class Response extends WOResponse
{

public static final String ContentDispositionHeaderKey = "content- disposition";
   public static final String ContentTypeHeaderKey = "content-type";
public static final String DisablePageCachingKey = "com.webobjects.appserver.Response.DisablePageCaching";

   private boolean allowClientCaching = false;


   /**
* Creates a response configured to use UTF-8 for the <code>defaultFormValueEncoding()</code>.
    */
   public Response()
   {
       super();
       setContentEncoding(_NSUtilities.UTF8StringEncoding);
   }



   /**
* Overridden to set allowClientCaching to deal with the IE download caching bug. Forces all HTML pages returned to
    * be UTF-8.
    *
* @see com .webobjects .appserver .WOResponse#_finalizeInContext(com.webobjects.appserver.WOContext)
    * @param aContext
    *            the WOContext the request is being finalized in
    */
   public void _finalizeInContext(WOContext aContext)
   {
String contentDisposition = headerForKey(ContentDispositionHeaderKey);
       String contentType = headerForKey(ContentTypeHeaderKey);

       boolean isAttachment = contentDisposition != null &&
(contentDisposition.indexOf("inline") > -1 || contentDisposition.indexOf("attachment") > -1); boolean isIE = aContext != null && RequestUtilities.isUserAgentInternetExplorer(aContext.request()); boolean isHTML = contentType != null && contentType.toLowerCase().indexOf("text/html") > -1;
       allowClientCaching = isIE && isAttachment && ! isHTML;

       // Force all HTML pages returned to be UTF-8.
       if (isHTML)
       {
// This controls the display and is also needed to handle input via forms setHeader("text/html; charset=UTF-8", ContentTypeHeaderKey);
       }

       super._finalizeInContext(aContext);
   }



   /**
* Overridden to <b>not</b> call super if allowClientCaching is set.
    *
    * @see com.webobjects.appserver.WOResponse#disableClientCaching()
    *
    */
   public void disableClientCaching()
   {
       if ( ! allowClientCaching) {
           super.disableClientCaching();
       }
   }



   /**
    * @see #disablePageCaching()
* @return <code>true</code> if disablePageCaching() has been called for this response
    */
   public boolean isPageCachingDisabled()
   {
       return userInfoForKey(DisablePageCachingKey) != null;
   }



   /**
* Adds a value for DisablePageCachingKey to this response's userInfo(). This can be used later
    * to flag that this response should not be cached.
    *
    * @see WOSession#savePage(WOComponent)
    * @see #isPageCachingDisabled()
    */
   public void disablePageCaching()
   {
       setUserInfoForKey("dummy value", DisablePageCachingKey);
   }



   /**
    * WO 5.4 API
    * Sets the value for key in the user info dictionary.
    *
    * @param value value to add to userInfo()
    * @param key key to add value under
    */
   public void setUserInfoForKey(Object value, String key)
   {
       /** require [valid_value] value != null;
                   [valid_key] key != null;
        **/
NSMutableDictionary newUserInfo = new NSMutableDictionary(value, key);
       if (userInfo() != null)
       {
           newUserInfo.addEntriesFromDictionary(userInfo());
       }
       setUserInfo(newUserInfo);
       /** ensure [value_set] userInfoForKey(key).equals(value);  **/
   }



   /**
    * WO 5.4 API
    *
    * @param key key to return value from userInfo() for
    * @return value from userInfo() for key, or null if not available
    */
   public Object userInfoForKey(String key)
   {
       /** require [valid_key] key != null;    **/
return userInfo() != null ? userInfo().objectForKey(key) : null;
   }


}




On Apr 18, 2008, at 9:25 PM, Joe Little wrote:

I have an application that uses SSL for the entire session, which is a
good thing. However, I have some IE users who can't download PDFs and
other documents out of the site. Its related to this Microsoft
knowledge base item:

http://support.microsoft.com/?kbid=323308

More specifically, it would appear that WO is setting the
"Cache-control:no-cache" header. Any hints if this is the default, and
where one would spelunk to find it?
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net

This email sent to [EMAIL PROTECTED]


--

Practical WebObjects - for developers who want to increase their overall knowledge of WebObjects or who are trying to solve specific problems.
http://www.global-village.net/products/practical_webobjects





_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/pierre%40apple.com

This email sent to [EMAIL PROTECTED]

Attachment: smime.p7s
Description: S/MIME cryptographic signature

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to