x-forwarded-for headers

This commit is contained in:
2026-02-02 20:14:11 -05:00
parent e9f72efb01
commit bb2bda1379

View File

@@ -146,6 +146,17 @@ public class JellyfinProxyService
{ {
using var request = new HttpRequestMessage(HttpMethod.Get, url); using var request = new HttpRequestMessage(HttpMethod.Get, url);
// Forward client IP address to Jellyfin so it can identify the real client
if (_httpContextAccessor.HttpContext != null)
{
var clientIp = _httpContextAccessor.HttpContext.Connection.RemoteIpAddress?.ToString();
if (!string.IsNullOrEmpty(clientIp))
{
request.Headers.TryAddWithoutValidation("X-Forwarded-For", clientIp);
request.Headers.TryAddWithoutValidation("X-Real-IP", clientIp);
}
}
bool authHeaderAdded = false; bool authHeaderAdded = false;
// Check if this is a browser request for static assets (favicon, etc.) // Check if this is a browser request for static assets (favicon, etc.)
@@ -262,6 +273,17 @@ public class JellyfinProxyService
using var request = new HttpRequestMessage(HttpMethod.Post, url); using var request = new HttpRequestMessage(HttpMethod.Post, url);
// Forward client IP address to Jellyfin so it can identify the real client
if (_httpContextAccessor.HttpContext != null)
{
var clientIp = _httpContextAccessor.HttpContext.Connection.RemoteIpAddress?.ToString();
if (!string.IsNullOrEmpty(clientIp))
{
request.Headers.TryAddWithoutValidation("X-Forwarded-For", clientIp);
request.Headers.TryAddWithoutValidation("X-Real-IP", clientIp);
}
}
// Handle special case for playback endpoints - Jellyfin expects wrapped body // Handle special case for playback endpoints - Jellyfin expects wrapped body
var bodyToSend = body; var bodyToSend = body;
if (!string.IsNullOrWhiteSpace(body)) if (!string.IsNullOrWhiteSpace(body))
@@ -424,6 +446,17 @@ public class JellyfinProxyService
using var request = new HttpRequestMessage(HttpMethod.Delete, url); using var request = new HttpRequestMessage(HttpMethod.Delete, url);
// Forward client IP address to Jellyfin so it can identify the real client
if (_httpContextAccessor.HttpContext != null)
{
var clientIp = _httpContextAccessor.HttpContext.Connection.RemoteIpAddress?.ToString();
if (!string.IsNullOrEmpty(clientIp))
{
request.Headers.TryAddWithoutValidation("X-Forwarded-For", clientIp);
request.Headers.TryAddWithoutValidation("X-Real-IP", clientIp);
}
}
bool authHeaderAdded = false; bool authHeaderAdded = false;
// Forward authentication headers from client (case-insensitive) // Forward authentication headers from client (case-insensitive)