DevToolBoxZA DARMO
Blog

Kompletny Przewodnik po Nagłówkach HTTP

12 minby DevToolBox

Nagłówki HTTP są niewidocznym kręgosłupem sieci web. Ten przewodnik omawia nagłówki żądań, nagłówki odpowiedzi, nagłówki bezpieczeństwa i konfigurację CORS.

Podstawowe nagłówki żądań

Nagłówki żądań są wysyłane przez klienta do serwera i zawierają metadane dotyczące żądania.

// Common HTTP Request Headers

GET /api/users HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Accept: application/json
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate, br
Content-Type: application/json
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
Cache-Control: no-cache
If-None-Match: "33a64df551425fcc55e4d42a148795d9f25f89d"
If-Modified-Since: Thu, 01 Jan 2026 00:00:00 GMT
Origin: https://myapp.com
Referer: https://myapp.com/dashboard
X-Request-ID: 550e8400-e29b-41d4-a716-446655440000

// Setting headers with fetch API
const response = await fetch('https://api.example.com/users', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${token}`,
    'Accept': 'application/json',
    'X-Request-ID': crypto.randomUUID(),
  },
});

Nagłówki bezpieczeństwa HTTP

Nagłówki bezpieczeństwa chronią użytkowników przed XSS, clickjackingiem i atakami man-in-the-middle.

// Essential Security Headers for Express.js
import express from 'express';

const app = express();

app.use((req, res, next) => {
  // Prevent XSS attacks
  res.setHeader('X-XSS-Protection', '1; mode=block');

  // Prevent MIME type sniffing
  res.setHeader('X-Content-Type-Options', 'nosniff');

  // Prevent clickjacking
  res.setHeader('X-Frame-Options', 'DENY');

  // Force HTTPS for 1 year (include subdomains)
  res.setHeader(
    'Strict-Transport-Security',
    'max-age=31536000; includeSubDomains; preload'
  );

  // Content Security Policy
  res.setHeader(
    'Content-Security-Policy',
    [
      "default-src 'self'",
      "script-src 'self' 'nonce-{RANDOM}' https://cdn.example.com",
      "style-src 'self' 'unsafe-inline'",
      "img-src 'self' data: https:",
      "font-src 'self'",
      "connect-src 'self' https://api.example.com",
      "frame-ancestors 'none'",
    ].join('; ')
  );

  // Control referrer information
  res.setHeader('Referrer-Policy', 'strict-origin-when-cross-origin');

  // Control browser features
  res.setHeader(
    'Permissions-Policy',
    'camera=(), microphone=(), geolocation=(self)'
  );

  next();
});

CORS: Udostępnianie zasobów między źródłami

CORS pozwala serwerom określić, które źródła mogą uzyskiwać dostęp do ich zasobów.

// CORS Configuration — Express.js

import cors from 'cors';

// Simple CORS for public API
app.use(cors({
  origin: '*',
  methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
}));

// Strict CORS for production
const allowedOrigins = [
  'https://myapp.com',
  'https://www.myapp.com',
  process.env.NODE_ENV === 'development' ? 'http://localhost:3000' : null,
].filter(Boolean);

app.use(cors({
  origin: (origin, callback) => {
    // Allow requests with no origin (mobile apps, curl, etc.)
    if (!origin) return callback(null, true);

    if (allowedOrigins.includes(origin)) {
      callback(null, true);
    } else {
      callback(new Error(`CORS: Origin ${origin} not allowed`));
    }
  },
  methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],
  allowedHeaders: ['Content-Type', 'Authorization', 'X-Request-ID'],
  exposedHeaders: ['X-Total-Count', 'X-RateLimit-Remaining'],
  credentials: true,       // Allow cookies
  maxAge: 86400,           // Cache preflight for 24 hours
}));

// Manual preflight handling
app.options('*', cors()); // Enable pre-flight across all routes

Nagłówki buforowania

Prawidłowe nagłówki buforowania znacznie poprawiają wydajność poprzez ponowne użycie odpowiedzi.

// HTTP Caching Headers

// 1. Cache-Control directives
Cache-Control: no-store          // Never cache (sensitive data)
Cache-Control: no-cache          // Revalidate before using cache
Cache-Control: private           // Browser cache only (not CDN)
Cache-Control: public, max-age=31536000  // Cache for 1 year (immutable assets)
Cache-Control: public, max-age=3600, stale-while-revalidate=60

// 2. ETag for conditional requests (server generates a hash of the content)
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d"
// Client sends back on subsequent requests:
If-None-Match: "33a64df551425fcc55e4d42a148795d9f25f89d"
// Server responds 304 Not Modified if unchanged

// 3. Last-Modified
Last-Modified: Thu, 23 Feb 2026 10:00:00 GMT
If-Modified-Since: Thu, 23 Feb 2026 10:00:00 GMT

// Setting cache headers in Next.js
export async function GET() {
  return new Response(JSON.stringify(data), {
    headers: {
      'Content-Type': 'application/json',
      'Cache-Control': 'public, max-age=3600, stale-while-revalidate=60',
      'ETag': `"${hash(data)}"`,
    },
  });
}

// Strategy by asset type:
// HTML pages:     Cache-Control: no-cache (always revalidate)
// CSS/JS bundles: Cache-Control: public, max-age=31536000, immutable
// API responses:  Cache-Control: private, no-cache
// Images:         Cache-Control: public, max-age=86400

Często zadawane pytania

Jaka jest różnica między Authorization a Authentication?

HTTP nie ma dedykowanego nagłówka Authentication. Poświadczenia są wysyłane za pomocą nagłówka Authorization.

Dlaczego mój preflight CORS nie powodzi się?

Żądania OPTIONS preflightu nie powiodą się, gdy serwer nie zwróci prawidłowych nagłówków Access-Control-Allow-*.

Co to jest nagłówek Content-Security-Policy?

CSP to potężny nagłówek bezpieczeństwa, który informuje przeglądarkę, którym źródłom treści należy ufać.

Jak wymusić HTTPS za pomocą nagłówków HTTP?

Użyj nagłówka Strict-Transport-Security (HSTS) z max-age=31536000.

Powiązane narzędzia

𝕏 Twitterin LinkedIn
Czy to było pomocne?

Bądź na bieżąco

Otrzymuj cotygodniowe porady i nowe narzędzia.

Bez spamu. Zrezygnuj kiedy chcesz.

Try These Related Tools

🔓CORS Tester

Related Articles

Przewodnik projektowania REST API: Najlepsze praktyki 2026

Projektuj solidne REST API: nazewnictwo zasobów, metody HTTP, paginacja, obsługa błędów, wersjonowanie i uwierzytelnianie.

Uwierzytelnianie JWT: Kompletny przewodnik implementacji

Zaimplementuj uwierzytelnianie JWT od zera. Struktura tokenow, tokeny dostepu i odswiezania, implementacja Node.js, zarzadzanie po stronie klienta, najlepsze praktyki bezpieczenstwa i middleware Next.js.

Jak naprawić błędy CORS: Kompletny przewodnik

Napraw błędy CORS krok po kroku.