Cors

CORS (Cross-Origin Resource Sharing)

Wprowadzenie

<strong>CORS (Cross-Origin Resource Sharing)</strong> to mechanizm bezpieczeństwa przeglądarek internetowych, który pozwala serwerom kontrolować, czy zasoby (API, czcionki, obrazy itp.) mogą być udostępniane stronom z innych domen.

Same-Origin Policy (SOP)

Przeglądarki domyślnie blokują żądania cross-origin ze względu na bezpieczeństwo (Same-Origin Policy). CORS jest sposobem na <strong>kontrolowane zdjęcie tego ograniczenia</strong> przez serwer.

Jak działa CORS?

  • Przeglądarka wysyła żądanie <strong>preflight</strong> (metoda <code>OPTIONS</code>)
  • Serwer odpowiada nagłówkami <code>Access-Control-*</code>
  • Jeśli serwer zezwoli – przeglądarka wykonuje właściwe żądanie (GET, POST, PUT…)

Najważniejsze nagłówki CORS

  • <code>Access-Control-Allow-Origin</code> – np. <code>https://example.com</code> lub <code>*</code>
  • <code>Access-Control-Allow-Methods</code> – GET, POST, PUT, DELETE…
  • <code>Access-Control-Allow-Headers</code> – Content-Type, Authorization itp.
  • <code>Access-Control-Allow-Credentials</code> – <code>true</code> (do cookies i autoryzacji)
  • <code>Access-Control-Max-Age</code> – jak długo cachować wynik preflight

Typowe błędy CORS

  • <code>Access-Control-Allow-Origin</code> missing / not matching
  • Żądanie z <code>credentials: 'include'</code> + <code>Access-Control-Allow-Origin: *</code>
  • Brak odpowiedzi na preflight (OPTIONS)

Jak skonfigurować CORS?

<strong>Przykłady konfiguracji:</strong>

  • Express.js / Node.js
  • NestJS, Next.js API Routes, Vercel, AWS API Gateway, Nginx itp.

Best Practices (2026)

  • Nigdy nie używaj <code>Access-Control-Allow-Origin: *</code> razem z <code>credentials: 'include'</code>
  • Precyzyjnie określ dozwolone originy (najlepiej z listy)
  • Używaj <code>Access-Control-Allow-Credentials: true</code> tylko gdy jest naprawdę potrzebne
  • Konfiguruj CORS na poziomie reverse proxy (Nginx, Cloudflare) gdy to możliwe

Aktualny stan (2026)

CORS pozostaje podstawowym mechanizmem bezpieczeństwa przeglądarek. Coraz częściej stosuje się też <strong>Credentialless CORS</strong> oraz integrację z Content Security Policy (CSP) i Trusted Types.

Powiązane pojęcia

Dodano: 17 maja 2026