API世界非常新鲜。
情景:
服务器1运行一个Web应用程序,该应用程序显示一个网页,其中包含从服务器2调用的信息。
服务器2运行一个api服务,只应答服务器1 。
ISSUE:
用户访问服务器1,并在控制器中调用服务器2.
//服务器1
public class IndexController : Controller
{
private WebProfile GetProfile(string id)
{
var client = new HttpClient();
var builder = new UriBuilder(string.Format("{0}{1}", baseMapUrl, "/Profile"));
builder.Port = 17608;
var query = HttpUtility.ParseQueryString(builder.Query);
query["pId"] = id;
builder.Query = query.ToString();
string url = builder.ToString();
client.BaseAddress = builder.Uri;
//client.BaseAddress = new Uri(url);
var response = client.GetAsync("?pId=" + id);
while (response.Status==TaskStatus.WaitingForActivation)
{
//wait until my status changes
var a = response.Status;
}
var result = response.Result.Content.ReadAsStringAsync();
//do more stuff...
}
}
// Server 2
[HttpGet]
public class ProfileController : ApiController
{
public Profile Get(string id)
{
var profile = new WebProfile();
//Go and do stuff, get data and return
return profile;
}
因此,我在服务器2上创建了一个防火墙策略,仅接受来自端口17608上的服务器1(IP)的连接。 但是经过测试,没有流量通过服务器2,因为呼叫(IP)不是服务器1的IP地址,它是访问服务器1的用户的IP ....
我做错了什么? 如何解决此问题,因为服务器2应该只接受来自服务器1的IP的呼叫?