Expand my Community achievements bar.

Enhance your AEM Assets & Boost Your Development: [AEM Gems | June 19, 2024] Improving the Developer Experience with New APIs and Events
SOLVED

404 when access resource using /etc.clientlib proxy

Avatar

Level 1

I am getting a 404 error when trying to reference an image resource under a clientlib folder. According to the documentation, this should work. I am able to verify that the image can be opened using the /app path so I know that the ACL and path are correct.  It seems like there is something else interfering with the resolution of etc.clientlibs proxy.  Can anyone please give me some hints on what might be wrong? 

Client lib folder with allowproxy = true

/app/myproject/clientlibs/clientlib-base/

Image location:

/app/myproject/clientlibs/clientlib-base/images/1.png

URL 404 error:

/etc.clientlibs/myproject/clientlibs/clientlib-base/images/1.png

1 Accepted Solution

Avatar

Correct answer by
Level 3

I am experiencing the same problem without dispatcher. Using localhost:4503

04.09.2017 09:55:13.700 *INFO* [0:0:0:0:0:0:0:1 [1504511713699] GET /etc.clientlibs/project/components/translation-container/clientlibs/css/images/translation.svg HTTP/1.1] com.adobe.granite.ui.clientlibs.impl.ClientLibraryProxyServlet Unable to proxy static resources at project/components/translation-container/clientlibs/css/images/translation.svg. Not allowed outside resources.

allowProxy on the translation-container component set to {Boolean}true

View solution in original post

7 Replies

Avatar

Correct answer by
Level 3

I am experiencing the same problem without dispatcher. Using localhost:4503

04.09.2017 09:55:13.700 *INFO* [0:0:0:0:0:0:0:1 [1504511713699] GET /etc.clientlibs/project/components/translation-container/clientlibs/css/images/translation.svg HTTP/1.1] com.adobe.granite.ui.clientlibs.impl.ClientLibraryProxyServlet Unable to proxy static resources at project/components/translation-container/clientlibs/css/images/translation.svg. Not allowed outside resources.

allowProxy on the translation-container component set to {Boolean}true

Avatar

Level 1

We are not using dispatcher.  Stanleyor's finding matches what our finding too. The implementation restricts assets only in the folder named 'resources'.  Do you know if the Proxy rule is configurable and where to configure it?

Avatar

Level 3

With all do respect - clientlibs are only for CSS and Javascript code. They are don't have anything common with images or other static content so that is why it won't work as expected.

Avatar

Level 1

Understood. I wouldn't normally put web asset under /app. However, that said, I still hope to see documentation updated on the proxy rule and the naming restriction for clientlib impl. It would have saved a lot of time figuring it out. And if the proxy rule is not currently configurable, I hope to see it become available in the future. It will give developers more implementation flexibility.

Avatar

Level 1

I don't agree. Images and fonts referred by in the css can also live in the clientlibs for sure. Following AEM documentation resources within a clientlib (Using Client-Side Libraries)​ should also be accessible.

It's not clear in the documentation but I found out that com.adobe.granite.ui.clientlibs.impl.ClientLibraryProxyServlet only proxies resources under the folder resources/. Also subfolders can be used.

So /app/myproject/clientlibs/clientlib-base/images/1.png should move to /app/myproject/clientlibs/clientlib-base/resources/images/1.png

Avatar

Level 2

you have to put all static resources (icons, images, etc.) in the subfolder with name "resources", see also
https://docs.adobe.com/content/help/en/experience-manager-65/developing/introduction/clientlibs.html...