Activity › Forums › Salesforce® Discussions › How can we know the client IP Address who is accessing a landing page?
Tagged: IP Address, Landing Page, Salesforce Developer
-
How can we know the client IP Address who is accessing a landing page?
Posted by Mohit on August 22, 2016 at 2:58 PMHi All,
How can we know the client IP Address who is accessing a landing page?
Please give suggestions.
Gourav replied 9 years, 8 months ago 2 Members · 1 Reply -
1 Reply
-
I’d suggest using an external service to retrieve the client IP address. There are plenty of them out there but ipify.org looks suitable as it’s super lightweight, it doesn’t have any rate limiting and supports both IPv4 and IPv6 addresses.
Simply use:
<p>Your IP address is: %%=HTTPGet(‘https://api.ipify.org’)=%%</p>
Which displays:
Your IP address is: 136.147.128.12
CloudPages
While this should work on a landing page, it doesn’t appear to work on a CloudPage as it appears that the CloudPage CDN is making a reverse proxy request and displays an IP address used by the data center hosting the CloudPage, and not the client IP.If you are using landing pages (available on earlier accounts) then you should be fine, but CloudPages won’t work and I can’t come up with a solution for this. I’ve tried using SSJS, and:
HTTPHeader.GetValue(“Host”);
Will return the Host value in the HTTP header, but the following HTTP headers return the same empty value as its HTTPRequestHeader() AMPscript counterpart:
HTTPHeader.GetValue(“Forwarded”);
HTTPHeader.GetValue(“X-Forwarded-For”);Solution
As we seem to have exhausted our server-side options for CloudPages, the simplest/only solution would be to:Make a client-side request to retrieve the IP address from ipify.org and display it on your page
Store the IP address in a cookie
Retrieve the cookie using AMPscript.
For purposes of my example, I’m just printing the IP address on the page, but you can use it to update a Data Extension, etc. I’m assuming that you are not adding any other cookies on your page. If you are, then you will need to update the Replace() function accordingly.<script type=”text/javascript”>
var url = ‘https://api.ipify.org’;
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if (request.readyState === 4) {
if (request.status === 200) {
document.body.className = ‘ok’;
document.cookie = ‘ipAddress=’ + request.responseText;
} else {
document.body.className = ‘error’;
}
}
};
request.open(“GET”, url , true);
request.send(null);
</script>%%[
var @ipAddress
set @ipAddress = Replace(HTTPRequestHeader(‘Cookie’),’ipAddress=’,”)
]%%<p>IP Address: %%=v(@ipAddress)=%%</p>
Log In to reply.