Hey Amrit, Have you looked at the rewriterpipeline example of acs commons? It rewrites css urls too: https://github.com/Adobe-Consulting-Services/acs-aem-commons/blob/master/bundle/src/main/java/com/adobe/acs/commons/rewriter/impl/VersionedClientlibsTransformerFactory.java <https://github.com/Adobe-Consulting-Services/acs-aem-commons/blob/master/bundle/src/main/java/com/adobe/acs/commons/rewriter/impl/VersionedClientlibsTransformerFactory.java>
Greets, Roy > On 26 May 2017, at 08:28, Amrit Verma <[email protected]> wrote: > > Hi, > > I have a use case(explained below) where I want to rewrite the URLs present > in a CSS file being returned in servlet response. I had a look at the current > sling rewriter pipeline but I was not able to rewrite CSS files using that > even if I provided a Generator(to parse the CSS file) and a Serializer(to > write CSS to response). I did some debugging and found that RewriterResponse > from ContentDispositionFilter [1] doesn't initiate the rewriting pipeline as > is done by the RewriterResponse [2] used by RewriterFilter [3]. > RewriterResponse from ContentDispositionFilter gets called if file is > delivered using OutputStream instead of Writer. > > I added a method getOutputStream to RewriterResponse in > ContentDispositionFilter and initiated the pipeline (by calling getProcessor) > in that method just as done in getWriter method of RewriterResponse [2] and I > was able to get my Generator working. I have a commit [4] showing the changes > in I did in sling. Can someone have a look at it and check if we can > incorporate such a change in sling? > It's only a draft and is missing on Javadocs. Also there are some changes > related to annotations. Please ignore them. I had to do that because of sling > issue [5] which is fixed now. > > Use Case - Using a CDN to deliver secure content from our Application Server > Rewriter pipeline is being used to rewrite internal links to CSS files in > html response delivered from Application Server. The rewritten links point to > a CDN server and contain a signature as query parameter. When browser > requests a CSS file from CDN for the first time, there is cache miss on CDN > and it forwards the request along with the signature to our application > server. The signature is validated and the app server returns CSS file to CDN > which is delivered to browser. > Now, if the CSS file contains links to resources, for example a URL to image > in background-image property, that image would be requested from CDN and CDN > would forward it to app server but app server wouldn't return the image > unless the signature is passed in request parameter. So we want to rewrite > the CSS file being returned by app server so that all the URLs are rewritten > to contain the signature parameter. > > Thanks > Amrit > > [1]: > https://github.com/apache/sling/blob/trunk/contrib/extensions/security/src/main/java/org/apache/sling/security/impl/ContentDispositionFilter.java > [2]: > https://github.com/apache/sling/blob/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/RewriterResponse.java > [3]: > https://github.com/apache/sling/blob/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/RewriterFilter.java > [4]: > https://github.com/averma21/sling/commit/c2e0464510407b4384f9079192943e87599566d9 > [5]: https://issues.apache.org/jira/browse/SLING-6879 > > > >
signature.asc
Description: Message signed with OpenPGP
