2016-04-12 22 views
1

Bu blogyu takip ediyorum post. Ama AEM 6.1'de 403 hatası alıyorum. 'Apache Sling Referrer Filter' içinde değişiklik yapmak istemiyorum. Bu hata, /libs/granite/csrf/token.json403 Sling Post servlet

numaralı telefonu arayarak alabileceğim CSRF belirteci nedeniyle geliyor, ancak bu form üstbilgisinde bu CSRF belirtecini nasıl ekleyebilirim? Yoksa çalışmasını sağlamak için başka bir yolu var mı?

+0

https://stackoverflow.com/questions/39201101/aem-403-forbidden-occurs-when- call-a-post-servlet/39490339 # 39490339 –

cevap

1

Eğer bağımsız etiketiyle csrf belirteci ekleyebilir

<cq:includeClientLib categories="granite.csrf.standalone" /> 

Eğer bir formu kullanın her sayfada bu ekleyebilir, ya da belki bir masterpage cadı her sayfada

csrf için devralır var belirteci, formüler gönderilmeden önce gizli bir alandır. sayfanıza olarak

<input type="hidden" name=":cq_csrf_token" value="4a6sd4f6as4df6as.a5s4df6a4sdf674asd96f"></input> 
+0

clientLibs Kullanılamıyor, çünkü bu html dosyası AEM'nin dışında, sadece bir tane.html dosyası. –

+0

Hatta html biçiminde gizli tür ekledim, ancak sonuç aynı. –

+0

Eğer aem dışında iseniz, nasıl yapacağımı bilmiyorum. Sadece "/libs/granite/csrf/token.json" dan bir jeton alabileceğinizi biliyorum. Ve sonra istek Başlık için id eklemek zorunda, belki de ": cq_csrf_token" olarak eklemelisiniz, ama emin değilim. –

0

AEM dışında gibi küresel bunu halletmenin bir yolu uygulamanızda granit csrf JS kapsam içine almak ve AEM token.json url işaret etmek, değiştirmek için olacağını görünüyor. Bu betik form mesajları ile ilgilenir, AJAX global düzeyde çağırır.

İkincisi, bu betik bazı kontroller ile ilgili sunucu url ana bilgisayarları ve bağlam yolları yapar. Yani bunları da devre dışı bırakmanız gerekecek. Değiştirmek için oldukça basit bir JS. Bunun etik bir yaklaşım olmadığını biliyorum ama bu şekilde AEM kullanmak da normal bir kullanıcı değildir :)

+0

Sling, POST servletini bu şekilde kullanma işlevine sahiptir, bu yüzden etik bir yoldur :) ve bunu uygun bir başlık ile java koduyla HTTP POST'u arayarak çözdüm. –

+0

Siz de çözümünüzü detaylandırır ve başkalarına yardım etmek için bir cevap olarak ekleyebilirsiniz. Aslında bir html sayfasından yayınlamaya çalıştığınızı düşündüm. – Abhishek