Interviewfrage für Full-Stack-Entwickler

Warum schickt der Browser vor manchen unserer API-Aufrufe einen OPTIONS-Request, und wie verhinderst du, dass er scheitert?

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

Kurzantwort

Dieser OPTIONS-Aufruf ist der CORS-Preflight. Browser schicken ihn, sobald ein Cross-Origin-Request nicht einfach ist, was jeden eigenen Header, einen JSON-Content-Type oder eine andere Methode als GET, HEAD oder POST abdeckt. Dein Server muss dieses OPTIONS mit Access-Control-Allow-Origin, Allow-Methods und Allow-Headers beantworten, die den echten Request tatsächlich abdecken, plus Allow-Credentials und einer konkreten Origin, wenn Cookies im Spiel sind.

Warum Interviewer das fragen

Jeder wurde schon von CORS blockiert; viel weniger können es erklären. Der Interviewer will wissen, ob dir klar ist, dass CORS eine vom Browser durchgesetzte Regel zum Schutz des Nutzers ist und keine serverseitige Zugriffskontrolle, denn wer das verpasst, schlägt gern vor, es abzuschalten oder darum herum zu proxyen, und reißt damit echte Sicherheitslöcher. Die Regeln für einfache Requests zu benennen zeigt, dass du es sauber debuggt hast, statt einen Wildcard einzufügen.

So baust du deine Antwort auf

  • Sag, was einen Preflight auslöst und was einen einfachen Request ausmacht.
  • Zähl die Response-Header auf, die der Server zurückgeben muss.
  • Deck den Fall mit Credentials ab und warum Wildcards dort scheitern.
  • Stell klar, dass CORS den Browser-Nutzer schützt und nicht deinen Server.

Beispielantwort

Gesprochenes Beispiel, erste Person

Der Preflight ist der Browser, der um Erlaubnis fragt, bevor er etwas mit Nebenwirkungen schickt. Ein schlichtes GET ohne eigene Header ist ein einfacher Request und geht direkt raus, aber sobald du einen Authorization-Header ergänzt oder application/json schickst, kommt erst das OPTIONS. Wenn es scheitert, prüfe ich drei Dinge der Reihe nach: beantwortet der Server OPTIONS überhaupt, listet Access-Control-Allow-Headers jeden Header, den der echte Request schickt, und wird die Origin exakt zurückgespiegelt, inklusive Schema und Port. Der Fall mit Credentials erwischt viele, denn wenn du Cookies schickst, kannst du keine Wildcard-Origin nutzen; du musst eine konkrete erlaubte Origin zurückgeben und Access-Control-Allow-Credentials auf true setzen. Ich setze außerdem Access-Control-Max-Age, damit der Browser nicht vor jedem einzelnen Aufruf preflightet. Woran ich ein Team immer erinnere: nichts davon schützt die API. Alles, was kein Browser ist, ignoriert CORS komplett, Autorisierung muss also weiterhin auf dem Server durchgesetzt werden.

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

  • Warum kannst du mit Credentials keine Wildcard-Origin nutzen?
  • Was macht Access-Control-Max-Age tatsächlich?
  • Wie würdest du eine legitime Third-Party-Integration behandeln, die diese API aufruft?

Weitere Fragen für Full-Stack-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