我有一個帶有 SignalR 集線器的 .Net 5 應用程式,我想從“X-forwarded-for”獲取客戶端的 IP。我的應用程式位于負載均衡器后面,因此獲取 RemoteIpAddress 始終回傳 10.xxx Ip。
從 HubCallerContext 開始,我可以從其功能中獲取 IHttpConnectionFeature
var httpReq = Context.Features.Get<IHttpConnectionFeature>();
和除錯時,我可以看到,物件包含一個RequestHeader,但我只能訪問LocalIpAddress,RemoteIpAddress,LocalPort,和ConnectionId。
呼叫httpReq.RequestHeaders不允許我編譯應用程式。
有什么方法可以從IHttpConnectionFeatureor獲取標題DefaultHubCallerContext?
uj5u.com熱心網友回復:
您可以使用IApplicationBuilder#UseForwardedHeaders來自Microsoft.AspNetCore.Builder.ForwardedHeadersExtensions.
RemoteIpAddress只要所有代理正確更新標頭X-Forwarded-For并且選項正確,此中間件就會更新客戶端的 IP (我們必須硬編碼代理的數量或告訴我們可以信任的 IP/網路)。
在您Startup.cs將以下中間件添加到Configure方法中:
app.UseForwardedHeaders();
然后ConfigureServices你必須配置它:
services.Configure<ForwardedHeadersOptions>(options =>
{
...
});
有關選項的更多資訊,請參見:https : //docs.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-6.0#forwarded-headers-middleware -選項
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/409259.html
標籤:
