Rob Ryan created SLING-6271:
-------------------------------

             Summary: ContentDispositionFilter can suppress content type upon 
request forwarding
                 Key: SLING-6271
                 URL: https://issues.apache.org/jira/browse/SLING-6271
             Project: Sling
          Issue Type: Bug
          Components: Extensions
    Affects Versions: Security 1.1.0
            Reporter: Rob Ryan


In SLING-4604 Alessandro Bonfatti noted a use case whereby a response would 
contain no Content-Type header despite a similar non-forwarded request would 
have a Content-Type. He further traced it to the ContentDispositionFilter and 
the change where I introduced a shortcut in cases the same content type was 
being set repeatedly.

The scenario is:
setContentType is called
RequestDispatcher.forward is used to forward a request to a new servlet for 
further handling. 
setContentType is called.

As of SLING-4604, the second setContentType call will be ignored if it sets the 
same content type. But even if it *is* the same, setContentType needs to be 
called again because request forwarding clears all headers with 
response.reset().

I will attach two patches, one (simple) very simple, and the best performing. 
The other (conservative) is more complex, but should still perform adequately 
and is conservative in the following senses:
It will always call super.setContentType when its setContentType is invoked.
On each setContentType it will re-apply the Content-Disposition header if there 
is not one present and the 'attachment' value is called for by the 
configuration.




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to