Dieser Artikel beschreibt wie ein .Net Core Projekt aufzusetzen ist sowie ein evtl. eingesetzter NGINX Reverse-Proxy konfiguriert werden muss um CORS problemlos zu konfigurieren und zu verwenden.

Konfiguriert wird eine .NET Core 5 Applikation auf einem Debian 10 mit NGNIX Web Server.

Codeseitig sind folgende Schritte durchzuführen:

  • 1. Methode ConfigureServices in der Klasse Startup erweitern:

				
					// ...
private static readonly string CorsPolicy = "CorsAllowAny";
// ...
public void ConfigureServices(IServiceCollection services)
{
            services.AddCors(options =>
            {
                options.AddPolicy(CorsPolicy,
                    builder => builder.AllowAnyOrigin()
                    .AllowAnyMethod()
                    .AllowAnyHeader());
            });
            // ...
}
				
			
  • 2. Methode Configure in der Klasse Startup erweitern

				
					public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
            // ...
            app.UseRouting(); // <<< Nach dieser Zeile
 
            app.UseCors(CorsPolicy);
 
            app.UseForwardedHeaders(new ForwardedHeadersOptions
            {
                ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
            });
 
            app.UseAuthentication(); // <<< vor dieser Zeile bzw. vor UseEndpoints sollte es keine Auth geben
            // ...
}
				
			

Serverseitig sind folgende Schritte zu unternehmen (Bei Debian basierten Systemen, bsp.: Debian 10, NGINX installiert und konfiguriert):

  • 1. Erzeugen der Datei /etc/nginx/proxy.conf

				
					proxy_redirect          off;
proxy_set_header        Host $host;
proxy_set_header        X-Real-IP $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header        X-Forwarded-Proto $scheme;
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffers           32 4k;
				
			
  • 2. Editieren der Datei /etc/nginx/nginx.conf

				
					http {
    include        /etc/nginx/proxy.conf;
    # ...
 
    server {
        # ...
 
        add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
        add_header X-Frame-Options DENY;
        add_header X-Content-Type-Options nosniff;
 
        # ...
    }
}
				
			
  • 3. Neu laden des NGINX

				
					service nginx reload