Cloudflare.ForwardedHeaders
1.0.0
dotnet add package Cloudflare.ForwardedHeaders --version 1.0.0
NuGet\Install-Package Cloudflare.ForwardedHeaders -Version 1.0.0
<PackageReference Include="Cloudflare.ForwardedHeaders" Version="1.0.0" />
<PackageVersion Include="Cloudflare.ForwardedHeaders" Version="1.0.0" />
<PackageReference Include="Cloudflare.ForwardedHeaders" />
paket add Cloudflare.ForwardedHeaders --version 1.0.0
#r "nuget: Cloudflare.ForwardedHeaders, 1.0.0"
#:package Cloudflare.ForwardedHeaders@1.0.0
#addin nuget:?package=Cloudflare.ForwardedHeaders&version=1.0.0
#tool nuget:?package=Cloudflare.ForwardedHeaders&version=1.0.0
Cloudflare.ForwardedHeaders
Repository: github.com/orkunucan/Cloudflare.ForwardedHeaders.Automated
NuGet package for ASP.NET Core that downloads Cloudflare IP ranges (IPv4 and IPv6) and applies them to ForwardedHeadersOptions.KnownNetworks, so UseForwardedHeaders() trusts Cloudflare edge addresses when processing X-Forwarded-* headers.
- Target:
netstandard2.0(ASP.NET Core 2.2+ and modern .NET). - Startup: Fetches
https://www.cloudflare.com/ips-v4andhttps://www.cloudflare.com/ips-v6with a configurable timeout. - Fallback: If the network is unavailable, an embedded snapshot of CIDR lines is used.
- Optional refresh:
RefreshIntervalenables a background service that periodically refreshesKnownNetworks.
Installation
dotnet add package Cloudflare.ForwardedHeaders
Usage
In Program.cs or Startup.ConfigureServices:
using Cloudflare.ForwardedHeaders;
services.AddCloudflareForwardedHeaders(options =>
{
options.FetchTimeout = TimeSpan.FromSeconds(10);
options.RefreshInterval = TimeSpan.FromHours(24); // omit or null to disable background refresh
});
In the HTTP pipeline (before other middleware that depends on HttpContext.Connection or scheme):
app.UseForwardedHeaders();
The package registers ForwardedHeadersOptions (required for UseForwardedHeaders()), sets ForwardedHeaders to X-Forwarded-For and X-Forwarded-Proto by default, and populates KnownNetworks from Cloudflare CIDRs.
Notes
- Microsoft.AspNetCore.HttpOverrides 2.x does not provide
IServiceCollection.AddForwardedHeaders(). This library registersForwardedHeadersOptionsviaservices.Configure<ForwardedHeadersOptions>(...), which is sufficient forUseForwardedHeaders(). - Thread safety: Updates to
KnownNetworksuse a shared lock so startup configuration and the optional background refresher do not race with request handling.
Building the package
dotnet pack src/Cloudflare.ForwardedHeaders/Cloudflare.ForwardedHeaders.csproj -c Release
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.AspNetCore.HttpOverrides (>= 2.2.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 2.2.0)
- Microsoft.Extensions.Hosting (>= 2.2.0)
- Microsoft.Extensions.Http (>= 2.2.0)
- Microsoft.Extensions.Logging.Abstractions (>= 2.2.0)
- Microsoft.Extensions.Options (>= 2.2.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 109 | 4/21/2026 |