Interviewfrage für Frontend-Entwickler

Dein fetch zur API scheitert im Browser mit einem CORS-Fehler, derselbe Request funktioniert in curl aber problemlos. Was ist da los und was machst du?

Worauf der Interviewer abzielt, wie du deine Antwort aufbaust und ein gesprochenes Beispiel zum Anpassen.

Kurzantwort

CORS wird vom Browser durchgesetzt, nicht vom Server, curl bekommt es also nie zu sehen. Der Request hat den Server vermutlich erreicht, und der Antwort fehlte schlicht ein Allow-Origin-Header, den der Browser akzeptiert, oder ein Preflight per OPTIONS ist gescheitert. Schau im Network-Tab nach dem OPTIONS-Request und seinen Response-Headern, prüf, ob erlaubte Origin, Methoden und Header deinen Aufruf abdecken, und denk daran, dass Credentials eine explizite Origin plus Allow-Credentials brauchen, niemals einen Wildcard.

Warum Interviewer das fragen

Jeder Frontend-Entwickler läuft da rein, und die Antwort zeigt, ob du das Sicherheitsmodell des Browsers verstehst oder nur eine Proxy-Config kopierst, bis der Fehler weg ist. Der Interviewer will hören, dass CORS die Antwort schützt, dass ein Preflight durch nicht einfache Methoden, Header oder Content Types ausgelöst wird und dass der Fix auf den Server gehört. Vorzuschlagen, die Web-Security im Browser abzuschalten, ist ein Durchfaller.

So baust du deine Antwort auf

  • Sag, dass der Browser es durchsetzt, weshalb curl funktioniert.
  • Trenn im Network-Tab den Preflight vom eigentlichen Request.
  • Ordne die konkrete Fehlermeldung dem fehlenden Header zu.
  • Sag, wohin der Fix gehört und worum du das Backend bitten würdest.

Beispielantwort

Gesprochenes Beispiel, erste Person

Das Erste, was ich sage, ist, dass CORS eine Browser-Regel ist und keine Server-Regel, ein erfolgreiches curl sagt mir also nichts außer dass der Endpoint lebt. Der Browser hat den Request gemacht, oder einen Preflight dafür, und sich geweigert, mir die Antwort zu geben, weil die Header meine Origin nicht erlaubt haben. Ich öffne also den Network-Tab und suche zuerst nach einem OPTIONS-Request. Ist er da und liefert 4xx, scheitert der Preflight selbst, meistens weil ich einen eigenen Header oder einen JSON-Content-Type ergänzt habe, was ihn aus der Kategorie einfacher Requests geschoben hat, und die erlaubte Header-Liste des Servers ihn nicht enthält. Gibt es keinen Preflight, fehlt der eigentlichen Antwort ein Allow-Origin-Header, der zu meiner Origin passt. Der Fix liegt serverseitig. Lokal proxye ich in der Entwicklung über den Dev-Server, damit meine Origin passt, aber ich stelle sicher, dass die echten Header auch konfiguriert sind, sonst bricht es im Staging. Und wenn der Aufruf Cookies schickt, muss der Server eine konkrete Origin plus Allow-Credentials zurückgeben, weil ein Wildcard in dem Fall abgelehnt wird.

Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.

So funktioniert es

Nachfragen, mit denen du rechnen solltest

  • Was macht einen Request einfach genug, um den Preflight zu überspringen?
  • Warum funktioniert eine Wildcard-Origin nicht mit Requests mit Credentials?
  • Wie würdest du das debuggen, wenn der Network-Tab gar keine Antwort zeigt?

Weitere Fragen für Frontend-Entwickler

Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.

Meine Fragen vorhersagen

Üb die harten Fragen, bevor sie gestellt werden

Trainier mit einem Live-Copiloten und geh dann vorbereitet rein. Ein $29 Session Pass bringt dich durch das Vorstellungsgespräch, ohne Abo und ohne Bindung.

GhostPilot holen