We have a legacy REST client which lives on both the app-server and other machines, which makes calls to the app-server with an URL like http://MY-APP-SERVER-NAME:1234/Endpoint
.
In the ASP.net handler we want to check if the request has come from the local machine and have code like this in our controller:
[HttpPut, Route("/Endpoint")]
public async Task<ActionResult> Method()
{
var sourceIp = request.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();
if (sourceIp.Equals("0.0.0.1"))...
What we’re observing is that userIpAddress
is taking some unexpected value like 34.12.56.73
. Both RemoteIpAddress
and LocalIpAddress
are the same IPv6 address configured for the local machine’s virtual network adapter.
I wonder if the client should be making calls to localhost
instead of MY-APP-SERVER-NAME
but this code is harder to change.
It seems like it should be easy to tell if the request has come from the machine it is received on, is there some simple utility?
2