Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

Need to fetch the country code from response Header

binoy9299
Level 1
Level 1

Hi All,

 

Could anyone give pointers on how i can fetch the country code being passed from cloudflare which is in our response header within the JAVA model ? 

 

Thanks

1 Accepted Solution
kiranparab
Correct answer by
Level 4
Level 4

Hi,

 

There are 2 ways, i guess first way is relevant to your requirement

 

1. Getting Value from SlingModel to Sightly -

https://www.argildx.com/technology/sling-model-sightly-part/

- You need to process the logic from cloudfare to get the countrycode and provide back to sightly.

https://helpx.adobe.com/experience-manager/using/sling_model_adaptation.html

 

Example -

@Model(adaptables = {SlingHttpServletRequest.class, Resource.class}, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)

 

@SlingObject
private SlingHttpServletRequest request;

 

request.getHeader("HeaderKEY");

 

 

2. Passing the value through Sightly to SlingModel -

https://stackoverflow.com/questions/42324000/how-to-call-sling-model-method-with-input-parameter-aem

- If you want to pass the countrycode from sightly to slingModel

 

Thanks,

Kiran Parab

View solution in original post

4 Replies
Peter_Puzanovs
Community Advisor
Community Advisor

Hi Binoy,

 

Define your model with adaptables = { SlingHttpServletRequest.class }, then in your model body add 

 

 

    @Self
    private SlingHttpServletRequest request;

 

 

Once you are inside your init method you can ask for the header value 

 

request.getHeader("my-header"));

 


Regards,

Peter

 

kiranparab
Correct answer by
Level 4
Level 4

Hi,

 

There are 2 ways, i guess first way is relevant to your requirement

 

1. Getting Value from SlingModel to Sightly -

https://www.argildx.com/technology/sling-model-sightly-part/

- You need to process the logic from cloudfare to get the countrycode and provide back to sightly.

https://helpx.adobe.com/experience-manager/using/sling_model_adaptation.html

 

Example -

@Model(adaptables = {SlingHttpServletRequest.class, Resource.class}, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)

 

@SlingObject
private SlingHttpServletRequest request;

 

request.getHeader("HeaderKEY");

 

 

2. Passing the value through Sightly to SlingModel -

https://stackoverflow.com/questions/42324000/how-to-call-sling-model-method-with-input-parameter-aem

- If you want to pass the countrycode from sightly to slingModel

 

Thanks,

Kiran Parab

View solution in original post

Umesh_Thakur
Community Advisor
Community Advisor

Hi @binoy9299,

You can refer the below link for this purpose https://support.cloudflare.com/hc/en-us/articles/200170986-How-does-Cloudflare-handle-HTTP-Request-h...

this is just extension on @Peter_Puzanovs  post.

But this is not the recommended way, specially in multi- region sites you can not relay on any CDN to get the country code.
Normally in multi-region site we maintain site configuration in the form of Context Aware config and from there we used to get it.
So I will suggest first check in your application is there any implementation like that.
if yes then please use it.
Some times it has been observed some issue like in a country like Canada where we have two locale FR and EN then there was some issue in fetching country specific info.
 
 Hope this will help.
Umesh Thakur