Cross-Origin Resource Sharing: Der Türsteher des modernen Webs

Cross-Origin Resource Sharing: Der Türsteher des modernen Webs

Same-Origin-Policy, Preflight und Credentials verständlich erklärt – und wie Sie CORS-Fehler sauber auf dem Server beheben

Aktualisiert:

Abstract

CORS regelt, welche Websites Daten von fremden Servern lesen dürfen. So funktionieren Origin, Preflight und Credentials und so beheben Sie CORS-Fehler richtig.
  • #CORS
  • #Cross-Origin Resource Sharing
  • #Webentwicklung
  • #Sicherheit
  • #Same-Origin-Policy
  • #Origin-Header
  • #Access-Control-Allow-Origin
  • #Preflight-Requests
  • #Sicherheitsmechanismus
  • #Fetch API

Warum der Browser Ihre API-Antwort blockiert – und was wirklich dagegen hilft

Die neue Shop-Oberfläche läuft lokal auf dem Rechner der Entwicklerin, die API steht auf dem Testserver, und der erste Aufruf endet in roter Schrift in der Browserkonsole: blocked by CORS policy. Im Netzwerk-Tab sieht die Antwort des Servers dabei völlig normal aus, Statuscode 200, Daten vorhanden. Trotzdem kommt im JavaScript-Code nichts an.

Kaum eine Fehlermeldung kostet Webteams so viel Zeit wie diese, und kaum eine wird so oft falsch „repariert“. Das liegt daran, dass CORS kein Fehler im eigentlichen Sinn ist, sondern eine Schutzregel des Browsers. Wer verstanden hat, wen sie schützt und wer sie lockern darf, löst die meisten Probleme in wenigen Minuten und vermeidet dabei Konfigurationen, die neue Sicherheitslücken öffnen.

Die Same-Origin-Policy: Warum Browser fremde Antworten zurückhalten

Ausgangspunkt ist die Same-Origin-Policy, eine der ältesten Sicherheitsregeln im Browser. Sie besagt: Skripte einer Webseite dürfen grundsätzlich nur Antworten von Servern derselben Origin lesen.

Eine Origin besteht aus drei Teilen: Schema (https), Host (shop.example.de) und Port (443). Nur wenn alle drei übereinstimmen, gilt eine Adresse als gleiche Origin. Schon https://example.de und https://api.example.de sind zwei verschiedene Origins, ebenso http://localhost:3000 und http://localhost:8080.

Warum diese Strenge? Angenommen, Sie sind in einem Tab bei Ihrem Online-Banking angemeldet und öffnen in einem anderen Tab eine präparierte Seite. Ohne Same-Origin-Policy könnte deren JavaScript im Hintergrund Ihr Konto abfragen. Der Browser würde die Anfrage samt Ihrer Anmelde-Cookies senden, und das Skript könnte Kontostand und Umsätze auslesen. Die Same-Origin-Policy verhindert genau das: Die Anfrage darf zwar unter Umständen hinausgehen, aber die fremde Seite bekommt die Antwort nicht zu sehen.

Nicht jede Einbindung fremder Inhalte ist betroffen. Bilder, Stylesheets, Skripte oder Videos von anderen Servern lädt der Browser seit jeher ohne CORS. Erst wenn ein Skript die Inhalte auslesen will, etwa Pixel eines fremden Bilds aus einem Canvas-Element oder die Antwort eines fetch()-Aufrufs, greift die Regel. Ausnahmen sind Webfonts und JavaScript-Module (<script type="module">): Sie brauchen von fremden Servern passende CORS-Header.

Was CORS leistet: kontrollierte Ausnahmen

Moderne Webanwendungen bestehen oft aus mehreren Teilen auf verschiedenen Adressen: Frontend auf www, API auf api, Bilder auf einem CDN, Anmeldung bei einem Identitätsanbieter. Hier kommt Cross-Origin Resource Sharing ins Spiel. CORS ist ein Protokoll, mit dem ein Server dem Browser mitteilt, welchen fremden Origins er das Lesen seiner Antworten erlaubt.

Das ist der wichtigste Punkt zum Verständnis: Nicht die Webseite fordert sich Zugriff an, sondern der Server, dessen Daten gelesen werden, stellt die Erlaubnis aus. Der Browser setzt diese Erlaubnis nur durch. Das Bild vom Türsteher passt daher gut: Der Browser steht an der Tür, die Gästeliste schreibt der Server.

Spezifiziert ist CORS heute im Fetch Standard der WHATWG, der beschreibt, wie Browser Anfragen stellen und verarbeiten.

So läuft eine CORS-Anfrage ab

Einfache Anfragen

Bei vielen alltäglichen Anfragen schickt der Browser die Anfrage direkt ab und ergänzt einen Origin-Header, der verrät, von welcher Seite sie stammt:

GET /api/produkte HTTP/1.1
Host: api.example.de
Origin: https://shop.example.de

Der Server antwortet und gibt in der Antwort an, ob diese Origin lesen darf:

HTTP/1.1 200 OK
Content-Type: application/json
Access-Control-Allow-Origin: https://shop.example.de
Vary: Origin

Stimmt der Wert in Access-Control-Allow-Origin mit der Origin der Seite überein oder steht dort ein Sternchen (*), reicht der Browser die Antwort an das Skript weiter. Fehlt der Header oder passt er nicht, verwirft der Browser die Antwort und meldet einen CORS-Fehler. Der Header Vary: Origin sagt Caches und CDNs, dass die Antwort je nach anfragender Origin unterschiedlich ausfallen kann. Fehlt er, kann ein Cache die Freigabe für die eine Origin an eine andere ausliefern.

Als „einfach“ gelten Anfragen mit den Methoden GET, HEAD oder POST, die nur unkritische Header verwenden. Als Content-Type sind zudem nur text/plain, multipart/form-data und application/x-www-form-urlencoded erlaubt.

Preflight-Anfragen

Alles andere gilt als potenziell folgenreich: Methoden wie PUT, PATCH oder DELETE, eigene Header wie Authorization oder ein Content-Type von application/json. Damit ist praktisch jeder Aufruf einer modernen JSON-API betroffen. Bevor der Browser solche Anfragen sendet, fragt er beim Server mit einer OPTIONS-Anfrage vor, dem sogenannten Preflight:

OPTIONS /api/bestellungen/42 HTTP/1.1
Origin: https://shop.example.de
Access-Control-Request-Method: PUT
Access-Control-Request-Headers: authorization, content-type

Der Server muss ausdrücklich zustimmen:

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: https://shop.example.de
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Authorization, Content-Type
Access-Control-Max-Age: 600

Erst danach geht die eigentliche PUT-Anfrage hinaus. Mit Access-Control-Max-Age legt der Server fest, wie viele Sekunden der Browser das Ergebnis des Preflights zwischenspeichern darf. Browser begrenzen diesen Wert allerdings selbst, Chromium etwa auf zwei Stunden. Ohne Cache verdoppelt der Preflight die Zahl der Anfragen, was sich bei mobilen Verbindungen spürbar auf die Ladezeit auswirkt.

Anfragen mit Anmeldedaten

Sollen Cookies oder HTTP-Authentifizierung mitgeschickt werden, muss das Frontend das ausdrücklich anfordern, bei fetch() mit der Option credentials: 'include'. Der Server muss dann zwei Bedingungen erfüllen: Er sendet Access-Control-Allow-Credentials: true, und in Access-Control-Allow-Origin steht die konkrete Origin, kein Sternchen. Die Kombination aus Wildcard und Anmeldedaten lehnt der Browser ab. Das ist eine bewusste Sperre gegen die gefährlichste Fehlkonfiguration.

Ein verwandtes Detail: Auch Antwort-Header sind für Skripte zunächst nur eingeschränkt sichtbar. Möchte das Frontend etwa einen eigenen Header wie X-Total-Count für die Seitennavigation auswerten, muss der Server ihn über Access-Control-Expose-Headers freigeben.

Typische CORS-Fehler und ihre Ursachen

Die Meldungen in der Konsole sind knapp, verweisen aber fast immer auf eine dieser Ursachen:

  • Header fehlt ganz: Der Server ist nicht für CORS konfiguriert. Häufig ist das auch dann der Fall, wenn die Anwendung mit einem Fehler (Status 500) antwortet: Viele Frameworks setzen CORS-Header nur bei erfolgreichen Antworten. Der eigentliche Serverfehler versteckt sich dann hinter der CORS-Meldung.
  • Origin passt nicht: Ein Tippfehler, ein abschließender Schrägstrich, http statt https, ein fehlender Port oder www gegen ohne www. Der Vergleich ist exakt.
  • Preflight scheitert: Der Server kennt keine OPTIONS-Route, antwortet mit 404 oder 405 oder erlaubt die verwendete Methode beziehungsweise den Header nicht.
  • Authentifizierung blockiert den Preflight: Preflight-Anfragen enthalten keine Anmeldedaten. Prüft eine Middleware jede Anfrage auf ein gültiges Token, beantwortet sie den Preflight mit 401, und die eigentliche Anfrage findet nie statt. OPTIONS-Anfragen müssen daher vor der Authentifizierung behandelt werden.
  • Wildcard mit Credentials: Access-Control-Allow-Origin: * zusammen mit Cookies funktioniert nicht, siehe oben.
  • Header doppelt gesetzt: Wenn sowohl der Webserver (etwa Nginx) als auch die Anwendung CORS-Header ergänzen, enthält die Antwort zwei Werte. Der Browser akzeptiert das nicht.

So gehen Sie bei der Fehlersuche vor: Öffnen Sie die Entwicklerwerkzeuge des Browsers, filtern Sie im Netzwerk-Tab nach der betroffenen Anfrage und schauen Sie, ob ihr eine OPTIONS-Anfrage vorausgeht. Vergleichen Sie dann den Origin-Header der Anfrage mit den Access-Control-*-Headern der Antwort. Meist ist der Unterschied damit sichtbar.

CORS richtig konfigurieren: ein Beispiel mit Express

Die Lösung liegt fast immer auf dem Server, der die Daten bereitstellt. Für Node.js mit Express gibt es dafür das verbreitete Paket cors. Statt es pauschal für alle Origins zu öffnen, sollten Sie eine Liste erlaubter Origins hinterlegen:

import express from 'express';
import cors from 'cors';

const app = express();

// Nur diese Frontends dürfen Antworten der API lesen.
const erlaubteOrigins = [
  'https://shop.example.de',
  'https://admin.example.de',
];

app.use(
  cors({
    origin: erlaubteOrigins,
    credentials: true, // Cookies erlauben
    methods: ['GET', 'POST', 'PUT', 'DELETE'],
    allowedHeaders: ['Content-Type', 'Authorization'],
    maxAge: 600, // Preflight 10 Minuten zwischenspeichern
  }),
);

app.get('/api/produkte', (req, res) => {
  res.json([{ id: 1, name: 'Akkuschrauber' }]);
});

app.listen(8080);

Die Middleware beantwortet Preflight-Anfragen automatisch und setzt Vary: Origin. Wichtig ist die Reihenfolge: Sie muss vor der Authentifizierung und vor den Routen eingebunden sein. Weitere Schutzmaßnahmen für Express-Anwendungen beschreibt der Beitrag zur Absicherung von Node.js- und Express-Anwendungen.

Andere Frameworks haben vergleichbare Bausteine. In ASP.NET Core etwa definieren Sie eine benannte CORS-Richtlinie und binden sie über die Middleware ein, Django nutzt dafür üblicherweise das Paket django-cors-headers, und Spring bietet eine eigene CORS-Konfiguration. Wer mit .NET arbeitet, findet auf unserer Seite zu ASP.NET Core Unterstützung bei Architektur und Konfiguration.

Wenn Sie den Server nicht kontrollieren

Liegt die API bei einem Drittanbieter, der keine CORS-Freigabe vorsieht, führt kein sauberer Weg direkt aus dem Browser dorthin. Die übliche Lösung ist ein eigener Server, der die Anfrage stellvertretend ausführt (Backend for Frontend oder Proxy). Server-zu-Server-Aufrufe unterliegen keiner Same-Origin-Policy, weil kein Browser beteiligt ist. Das hat einen zweiten Vorteil: API-Schlüssel bleiben auf dem Server und landen nicht im JavaScript-Code, den jeder Besucher lesen kann.

Für die Entwicklung bieten Werkzeuge wie Vite oder Next.js Proxy- oder Rewrite-Funktionen, mit denen das lokale Frontend API-Aufrufe über die eigene Origin leitet. Auch in Produktion lässt sich das Problem oft ganz vermeiden, indem ein Reverse Proxy wie Nginx Frontend und API unter derselben Domain ausliefert, etwa die API unter /api.

Was CORS nicht leistet

An dieser Stelle entstehen die meisten Missverständnisse, und sie sind sicherheitsrelevant.

CORS schützt nicht den Server. Es schützt Nutzerinnen und Nutzer davor, dass fremde Webseiten in ihrem Namen Daten auslesen. Ein Angreifer mit curl oder einem eigenen Skript ignoriert CORS vollständig. Eine API braucht deshalb immer eine eigene Authentifizierung und Autorisierung, unabhängig von der CORS-Konfiguration.

CORS verhindert nicht, dass Anfragen ankommen. Einfache Anfragen schickt der Browser ab, bevor er die Antwort prüft. Ein Formular-POST einer fremden Seite erreicht den Server also durchaus und kann dort etwas auslösen, auch wenn die Seite die Antwort nicht lesen darf. Gegen solche Cross-Site Request Forgery (CSRF) helfen andere Mittel: Cookies mit dem Attribut SameSite, CSRF-Tokens oder die Prüfung des Origin-Headers auf dem Server.

mode: 'no-cors' ist keine Lösung. Die Option in fetch() unterdrückt zwar die Fehlermeldung, liefert aber eine „undurchsichtige“ Antwort, deren Inhalt das Skript nicht lesen kann. Sie ist nur für Spezialfälle gedacht.

Browser-Erweiterungen und abgeschaltete Sicherheit helfen höchstens beim schnellen Test auf dem eigenen Rechner. Für Anwenderinnen und Anwender ändert sich dadurch nichts, und das Problem taucht in Produktion wieder auf.

Schließlich gilt: Eine zu großzügige CORS-Konfiguration kann selbst zur Lücke werden. Besonders riskant ist es, die anfragende Origin ungeprüft in Access-Control-Allow-Origin zurückzuspiegeln und gleichzeitig Credentials zu erlauben. Dann darf faktisch jede Webseite im Namen angemeldeter Nutzer Daten lesen. Ähnlich heikel sind Prüfungen per Teilstring, bei denen etwa example.de.angreifer.net als erlaubt durchrutscht. Zusammen mit einer Cross-Site-Scripting-Lücke auf einer der erlaubten Origins wird CORS außerdem wirkungslos. Wie Sie XSS vermeiden, zeigt der Beitrag zur sicheren JavaScript-Entwicklung gegen Cross-Site-Scripting.

Was das für Ihr Team bedeutet

CORS ist weder Schikane noch Allheilmittel. Es ist ein schmaler, präziser Mechanismus, der eine bestimmte Klasse von Angriffen im Browser verhindert, und er funktioniert gut, wenn man ihn als Teil der API-Konfiguration versteht statt als lästiges Hindernis.

Für die meisten Teams lohnen sich drei Gewohnheiten. Erstens gehört die CORS-Konfiguration zur API und wird dort mit einer expliziten Liste erlaubter Origins gepflegt, getrennt nach Entwicklung, Test und Produktion. Zweitens sollte jede Lockerung, insbesondere * oder erlaubte Credentials, eine bewusste und dokumentierte Entscheidung sein. Drittens lohnt sich die Frage, ob Cross-Origin-Zugriffe überhaupt nötig sind: Eine Architektur, die Frontend und API unter einer Domain bündelt, umgeht viele Probleme von vornherein.

Unsere Einschätzung: Überschätzt wird CORS häufig als Schutz der eigenen API, unterschätzt wird das Risiko einer zu offenen Konfiguration. Wer Sicherheitsfragen wie diese schon in der Architekturphase klärt, spart später aufwendige Korrekturen. Wie sich das in Entwicklungsprozesse einbauen lässt, beschreibt unsere Seite zu Security by Design.

Häufige Fragen zu CORS

Lassen sich CORS-Fehler im Frontend beheben?

Nein. Das Frontend kann lediglich festlegen, ob es Anmeldedaten mitsenden möchte. Ob die Antwort gelesen werden darf, entscheidet allein der Server über seine Header. Ohne Zugriff auf den Server bleibt nur der Umweg über einen eigenen Proxy.

Ist Access-Control-Allow-Origin: * gefährlich?

Für wirklich öffentliche Daten ohne Anmeldung, etwa einen Wetterdienst oder öffentliche Produktinformationen, ist die Wildcard vertretbar. Für alles, was personenbezogene oder interne Daten liefert, sollten Sie eine explizite Liste erlaubter Origins verwenden. In Kombination mit Credentials lässt der Browser die Wildcard ohnehin nicht zu.

Warum funktioniert die Anfrage in Postman, aber nicht im Browser?

Postman, curl und andere Werkzeuge sind keine Browser und setzen die Same-Origin-Policy nicht durch. Die Anfrage selbst ist dort also in Ordnung, nur die Freigabe für die Webseite fehlt. Prüfen Sie deshalb die Antwort-Header und den Preflight.

Betrifft CORS auch Single-Page-Applications?

Ja, gerade dort. SPAs mit React, Vue oder Angular rufen ihre Daten meist per fetch() von einer API ab, die oft auf einer anderen Subdomain liegt. Ohne korrekte CORS-Konfiguration oder einen gemeinsamen Reverse Proxy funktioniert dann kein einziger Datenabruf.

Mehr aus „Security & Cybersecurity“

npm-Pakete sicher prüfen: So vermeiden Sie böse Überraschungen

Ein praxisnaher Ablauf, mit dem Sie ein npm-Paket in fünf bis zehn Minuten bewerten, von Wartung über Provenance bis hin zu Install-Skripten und Sicherheitslücken.

mehr erfahren

npm install unter der Lupe: Wie Angreifer Ihre Software-Lieferkette kapern

Was passiert wirklich, wenn Sie npm install ausführen? Eine anschauliche Einführung in Supply-Chain-Angriffe, reale Fälle wie qix und Shai-Hulud sowie konkrete Schutzmaßnahmen für Ihren Entwickleralltag.

mehr erfahren

PI Agent vs. Claude Code: Der unterschätzte Open-Source-Konkurrent

PI Agent ist der erste ernstzunehmende Open-Source-Konkurrent zu Claude Code. Wir zeigen anschaulich, was das Tool kann, wie es sich anpassen lässt und wann sich der Wechsel lohnt.

mehr erfahren

Shai-Hulud 2.0: Wie ein digitaler Wurm durch das npm-Ökosystem kriecht und was Sie dagegen tun können

Eine verständliche Erklärung des Shai-Hulud 2.0 npm-Wurms: Wie er funktioniert, warum er so gefährlich ist und wie Sie sich schützen können. Mit praktischen Tipps für Entwickler.

mehr erfahren

JWT und seine Tücken: Warum Entwickler vor JSON Web Tokens warnen

JWT gilt als moderne Lösung für die Authentifizierung, doch erfahrene Entwickler warnen vor den Fallstricken. Erfahren Sie, warum klassische Sessions oft die bessere Wahl sind und wann JWT wirklich Sinn macht.

mehr erfahren

npm-Sicherheit: Abhängigkeiten und Pakete gegen Angriffe absichern

npm-Sicherheit in der Praxis: wie Sie mit Lockfiles, npm ci, gesperrten Installationsskripten, 2FA und Trusted Publishing Ihre Lieferkette schützen.

mehr erfahren

Weitere Blog-Artikel

TypeScript in React: So entwickeln Sie robustere Webanwendungen

Ein umfassender Leitfaden zur Integration von TypeScript in React-Anwendungen, von der Grundkonfiguration bis zur API-Integration.

mehr erfahren

SVG im Web: Vektorgrafiken verstehen, einbinden und optimieren

SVG beschreibt Grafiken als Code und bleibt in jeder Größe scharf. So funktionieren viewBox und Pfade, so binden Sie SVG barrierefrei ein und optimieren es.

mehr erfahren

Serverless: Wie die Cloud das Programmieren verändert

Serverless verlagert den Serverbetrieb zum Cloudanbieter. Wie Sie Funktionen schreiben, Projekte strukturieren und Kaltstarts und Kosten einschätzen.

mehr erfahren

WebRTC erklärt: Videocalls direkt im Browser programmieren

WebRTC überträgt Audio und Video direkt zwischen Browsern. Sie erfahren, wie Signalisierung, STUN und TURN zusammenspielen und wie ein Videochat entsteht.

mehr erfahren

Big Data im Unternehmen: was der Begriff heute bedeutet

Was Big Data heute für Unternehmen bedeutet: Data Lake, Lakehouse und Cloud-Data-Warehouse, Datenqualität, Governance und DSGVO verständlich eingeordnet.

mehr erfahren

Blockchain und Bitcoin erklärt: Technik, Regulierung und Folgen

Wie Blockchain und Bitcoin technisch funktionieren, was MiCA und Bitcoin-ETFs verändert haben und wie Sie die Grundidee in TypeScript nachbauen.

mehr erfahren

Aktuelle Blog-Artikel

PHP-Migration nach PHP2Shell: Upgrade oder Sprachwechsel?

PHP2Shell und das Support-Ende von PHP 8.2: Was Sie jetzt patchen sollten, wie ein Upgrade auf 8.4 oder 8.5 gelingt und wann ein Sprachwechsel sinnvoll ist.

mehr erfahren

Schnelles Denken für Software: Was das KI-Modell Jev von ChatGPT und Co. unterscheidet

Jev ist ein System-1-KI-Modell, das keinen Text schreibt, sondern Fragen mit kalibrierten Wahrscheinlichkeiten beantwortet. Wie das funktioniert und wofür es sich eignet, lesen Sie hier.

mehr erfahren

Node.js ohne Ballast: 12 eingebaute Bordmittel, die npm-Pakete überflüssig machen

Von fetch() über node:test bis zur TypeScript-Unterstützung: Zwölf eingebaute Node.js-Funktionen, die axios, nodemon, dotenv, Jest, chalk und weitere npm-Pakete ersetzen – mit Stabilitätsstatus in Node 24 und den wichtigsten Einschränkungen.

mehr erfahren

KI-Agenten verstehen: MCP, A2A, AG-UI und A2UI einfach erklärt

MCP, A2A, AG-UI und A2UI verständlich erklärt: Wie KI-Agenten Werkzeuge nutzen, miteinander kommunizieren und Benutzeroberflächen erzeugen.

mehr erfahren

Rusts Lieferkette unter Beschuss: Warum ein Angriff nur der Anfang war

Ein Angriff auf neun Rust-Pakete war nach 110 Minuten gestoppt – aber das eigentliche Problem bleibt. Über zentrale Paketregistries, schmale Standardbibliotheken und Maßnahmen, die Sie heute umsetzen können.

mehr erfahren

Webentwicklung ohne SPA: Wie Clash mit VLang, Veb und htmx entsteht

Die Meetup-Plattform Clash zeigt, wie eine vollwertige Web-App mit VLang, Veb, SQLite und htmx entsteht – serverseitig gerendert, sicher und ganz ohne klassisches JavaScript-Framework.

mehr erfahren

React-Performance 2026: Warum weniger Optimierung mehr Tempo bringt

Viele React-Performance-Tipps sind veraltet. Anhand eines anschaulichen Autobahn-Vergleichs zeigt dieser Artikel, was 2026 wirklich zählt: richtige State-Platzierung, nebenläufige Features, Code-Splitting und der React Compiler.

mehr erfahren

React-Komponenten verbinden: Welcher Weg passt wann?

Props, Context, Stores, Server State und mehr: So finden Sie für jede Situation den passenden Weg, damit zwei React-Komponenten miteinander kommunizieren.

mehr erfahren

KI-Agenten in der Schleife: Loops in Claude Code und Codex

Was ein Loop bei KI-Agenten ist, welche Auslöser es gibt und wie Sie geplante Aufgaben in Claude Code und Codex mit Kostenkontrolle einrichten.

mehr erfahren

JavaScript 2026: Bun, Deno und TypeScript 7 läuten eine neue Ära ein

JavaScript erlebt 2026 seinen größten Umbruch seit einem Jahrzehnt: drei konkurrierende Laufzeitumgebungen, ein in Go portierter TypeScript-Compiler, Signals in den Frameworks und Werkzeuge in Rust. Dieser Artikel erklärt anschaulich, was dahintersteckt und was Sie jetzt lernen sollten.

mehr erfahren

npm-Pakete sicher prüfen: So vermeiden Sie böse Überraschungen

Ein praxisnaher Ablauf, mit dem Sie ein npm-Paket in fünf bis zehn Minuten bewerten, von Wartung über Provenance bis hin zu Install-Skripten und Sicherheitslücken.

mehr erfahren

npm install unter der Lupe: Wie Angreifer Ihre Software-Lieferkette kapern

Was passiert wirklich, wenn Sie npm install ausführen? Eine anschauliche Einführung in Supply-Chain-Angriffe, reale Fälle wie qix und Shai-Hulud sowie konkrete Schutzmaßnahmen für Ihren Entwickleralltag.

mehr erfahren

Programmiersprachen 2026: Wenn die KI Rust besser schreibt als der Mensch

Wenn KI den Code schreibt, ändert sich die Wahl der Programmiersprache grundlegend. Warum Rust, Go und Co. plötzlich attraktiver werden, und was das für Python bedeutet.

mehr erfahren

PI Agent vs. Claude Code: Der unterschätzte Open-Source-Konkurrent

PI Agent ist der erste ernstzunehmende Open-Source-Konkurrent zu Claude Code. Wir zeigen anschaulich, was das Tool kann, wie es sich anpassen lässt und wann sich der Wechsel lohnt.

mehr erfahren

Agentic Engine Optimization: So machen Sie Ihre Unternehmenswebsite fit für KI-Agenten

Erfahren Sie, wie Sie mit Agentic Engine Optimization (AEO) Ihre Unternehmenswebsite gezielt für KI-Assistenten wie ChatGPT, Claude oder Perplexity optimieren – inklusive praxisnaher Checkliste für Marketing- und Kommunikationsverantwortliche.

mehr erfahren

Claude Skills für Einsteiger: eigene KI-Workflows aufbauen

Claude Skills bündeln wiederkehrende Anweisungen in einer SKILL.md-Datei. So bauen Sie Skills auf und installieren sie in Claude und Claude Code.

mehr erfahren

Claude Code richtig nutzen: 15 Funktionen, die Profis kennen sollten

Claude Code kann mehr als chatten: So setzen Sie CLAUDE.md, Subagenten, Hooks, Skills, MCP und den Headless-Modus gezielt im Entwickleralltag ein.

mehr erfahren

Claude Code für Einsteiger: Vom Terminal zur fertigen Anwendung

Erfahren Sie, wie Sie mit Claude Code CLI ohne klassische Programmierkenntnisse echte Software bauen. Von Terminal-Grundlagen über Dashboards bis hin zu MCP-Servern, ein praxisnaher Überblick.

mehr erfahren

OpenClaw im Praxistest: vom Chatbot zum digitalen Assistenten

OpenClaw macht ein Sprachmodell zum selbst gehosteten Agenten mit Zugriff auf Rechner und Messenger. Aufbau, Einrichtung, Skills und Sicherheitsregeln.

mehr erfahren

Das Ende der Menüs: Wie KI die digitale Arbeitsumgebung verändert

Seit Jahrzehnten bedienen wir Computer über Fenster, Menüs und Ordner. KI-Agenten verschieben das zu Aufträgen in Alltagssprache. Was sich ändert und was nicht.

mehr erfahren

Microsoft gegen den Speicherfehler: Warum Rust C und C++ bis 2030 ablösen soll

Microsoft plant, C und C++ bis 2030 durch Rust zu ersetzen. Was steckt hinter dieser Entscheidung, welche technischen und kulturellen Hürden lauern, und was bedeutet das für Entwickler, die heute noch in C++ schreiben?

mehr erfahren

TanStack Start: Das moderne React-Framework, das Next.js herausfordert

TanStack Start ist ein modernes, DX-optimiertes Fullstack-Framework für React mit Server-Rendering, Streaming, Server Functions und durchgängiger TypeScript-Typsicherheit. Was steckt dahinter, und warum ist es eine echte Alternative zu Next.js?

mehr erfahren

Die Ralph-Wiggum-Technik: KI-Coding-Agenten, die nicht aufgeben

Die Ralph-Wiggum-Technik lässt einen Coding-Agenten denselben Auftrag wiederholen, bis die Tests bestehen. Wie sie funktioniert und worauf Sie achten sollten.

mehr erfahren

Warum KI Entwickler nicht ersetzt, aber ihre Rolle verändert

KI-Assistenten schreiben heute viel Code. Warum Fachwissen trotzdem wichtiger wird und welche Fähigkeiten Entwickler:innen jetzt gezielt ausbauen sollten.

mehr erfahren

Von Node.js zu Bun: Next.js-Projekte schrittweise umstellen

Wie Sie Bun in Next.js einsetzen: von bun install über bun --bun next dev bis zum Deployment. Was dabei schneller wird, was nicht und was Sie vorher prüfen.

mehr erfahren

Bun erklärt: JavaScript-Laufzeit, Paketmanager und Bundler in einem

Bun ist Laufzeitumgebung, Paketmanager, Bundler und Testrunner in einem. Wie es funktioniert, wie kompatibel es zu Node.js ist und für wen es sich lohnt.

mehr erfahren

KI-Agenten richtig anleiten: Spezifikationen, die funktionieren

Spezifikationen für KI-Coding-Agenten wie Claude Code oder GitHub Copilot: welche Angaben hineingehören, wie Sie Aufgaben aufteilen und Grenzen setzen.

mehr erfahren

Was ist .NET? Einfach erklärt für Entwickler, die endlich durchstarten wollen

Was ist .NET eigentlich und warum nutzen es Millionen Entwickler weltweit? In diesem Artikel erklären wir die Plattform von Microsoft von Grund auf: Geschichte, Architektur, Ökosystem und ein erstes einfaches Beispiel.

mehr erfahren

Künstliche Intelligenz 2026: Vom Chatbot zum digitalen Kollegen

Ein anschaulicher Blick auf die wichtigsten KI-Trends 2026: Von Multi-Agenten-Systemen über physische KI bis hin zu Quanten-Computing.

mehr erfahren

Was 2025 uns über künstliche Intelligenz gelehrt hat – und was 2026 kommt

Entdecken Sie die vier wichtigsten KI-Entwicklungen aus 2025 und was dies für 2026 bedeutet: Von unsichtbaren Agenten über Hardware-Engpässe bis hin zu modularen Spezialistenteams. Ein verständlicher Überblick für Einsteiger.

mehr erfahren

REST und Event-Streams: Wann sich ereignisbasierte Backends lohnen

REST oder Event-Streams? Wie sich Request/Response und Publish/Subscribe unterscheiden, wann Kafka, SSE oder WebSockets passen und wo REST richtig bleibt.

mehr erfahren

Shai-Hulud 2.0: Wie ein digitaler Wurm durch das npm-Ökosystem kriecht und was Sie dagegen tun können

Eine verständliche Erklärung des Shai-Hulud 2.0 npm-Wurms: Wie er funktioniert, warum er so gefährlich ist und wie Sie sich schützen können. Mit praktischen Tipps für Entwickler.

mehr erfahren

HTMX: Moderne Webanwendungen ohne JavaScript-Framework bauen

HTMX lädt Inhalte nach, sendet Formulare und tauscht Seitenteile per HTML-Attribut aus. Die Anleitung zeigt Browser- und Serverseite und den Stand von HTMX 4.

mehr erfahren

Electron vs. Tauri: Der praktische Vergleich für Desktop-Apps mit Web-Technologien

Ein praxisnaher Vergleich zwischen Electron und Tauri für die Entwicklung von Desktop-Anwendungen mit Web-Technologien. Erfahre, welches Framework für dein Projekt besser geeignet ist.

mehr erfahren

Architekturkompetenz im KI-Zeitalter: Der Weg zum Full-Stack-Professional

Eine systematische Analyse der sich wandelnden Rollenbilder in der Software-Architektur und die methodische Entwicklung von Full-Stack-Kompetenzen im Kontext moderner KI-Werkzeuge.

mehr erfahren

Omarchy im Test: So macht Linux endlich wieder Spaß

Entdecken Sie Omarchy - das moderne Linux-System, das Ästhetik und Effizienz vereint. Perfekt für alle, die mehr aus ihrem Computer herausholen möchten.

mehr erfahren

JWT und seine Tücken: Warum Entwickler vor JSON Web Tokens warnen

JWT gilt als moderne Lösung für die Authentifizierung, doch erfahrene Entwickler warnen vor den Fallstricken. Erfahren Sie, warum klassische Sessions oft die bessere Wahl sind und wann JWT wirklich Sinn macht.

mehr erfahren

7 KI-Begriffe, die jeder kennen sollte: Von KI-Agenten bis Superintelligenz

Entdecken Sie die sieben wichtigsten KI-Begriffe von Agentic AI bis ASI – verständlich erklärt mit praktischen Beispielen. Perfekt für alle, die die KI-Revolution verstehen möchten.

mehr erfahren

Machine Learning verstehen: Von den Grundlagen bis zu modernen KI-Systemen

Ein umfassender Einstieg in die Welt des Machine Learning: Verstehen Sie die Unterschiede zwischen KI, ML und Deep Learning und entdecken Sie, wie moderne Algorithmen aus Daten lernen.

mehr erfahren

Die Scrum-Master-Rolle auf dem Prüfstand: Architekturperspektiven auf agile Organisationsstrukturen

Eine systematische Analyse der Scrum-Master-Rolle aus Architektursicht: Wann schafft sie Wert, wann wird sie zum organisatorischen Antipattern?

mehr erfahren

Was dürfen wir für Sie tun?

So sind wir zu erreichen: