Begræns eller tillad ressourcedeling mellem sider ved hjælp af CORS-header.
CORS (Cross-Origin Resource Sharing) overskrift understøttes i alle moderne browsere.
Kan jeg bruge kors? Data om support til cors-funktionen på tværs af de store browsere fra caniuse.com.
Som standard begrænser browseren HTTP-anmodninger på tværs af oprindelsen gennem scripts. Og, CORS kan være praktisk til at genbruge de fælles applikationsressourcer på andre webapplikationer. Når det er tilføjet korrekt, instruerer det browseren om at indlæse applikationen fra en anden oprindelse.
Der er seks populære typer CORS-headere, som en server kan sende. Lad os udforske dem.
Contents
Adgang-Kontrol-Tillad-Origin
Den mest populære, at den fortæller browseren at indlæse ressourcerne på den tilladte oprindelse. Det understøtter jokertegn (*) og gør det, at ethvert domæne kan indlæse ressourcerne. Det har dog en mulighed for at tillade en bestemt oprindelse.
Apache
Tilføj følgende i httpd.conf eller en hvilken som helst anden konfigurationsfil i brug.
Header-sæt Access-Control-Allow-origin "*"
Genstart Apache for at teste. Du skal se dem som svaroverskrifter.
Og for at tillade fra en bestemt oprindelse (f.eks .: https://gf.dev) kan du bruge følgende.
Header-sæt Access-Control-Allow-origin "https://gf.dev"
Nginx
Her er et eksempel for at tillade oprindelse https://geekflare.dev. Tilføj følgende i serverblokken til nginx.conf eller i konfigurationsfil i brug.
add_header Access-Control-Allow-origin "https://geekflare.dev";
Adgangskontrol-tillader-Metoder
Browseren kan starte en eller flere HTTP-metoder for at få adgang til ressourcerne. Eks: – Hent, sæt, valgmuligheder, sæt, slet, post
Apache
Tillader kun GET og POST.
Header tilføje Access-Control-Allow-metoder "FÅ, POST"
Nginx
Lad os sige, at du er nødt til at tilføje DELETE- og OPTIONS-metoder, så kan du tilføje som nedenfor.
add_header Access-Control-Allow-Methods "Slet, valgmuligheder";
Efter genstart skal du se dem i svaroverskrifterne.
Adgang-Kontrol-Tillad-skæreborde
De følgende overskrifter er i safelist, hvilket betyder, at du ikke behøver at tilføje en. Det skal fungere som standard.
- Indholdstype
- Acceptere
- Content-Language
- Accept-Language
Hvis du dog skal tilføje en brugerdefineret en, kan du gøre det. Det understøtter en eller flere overskrifter.
Apache
Lad os sige, at du vil tillade overskrifter til X-Custom-Header og X-Powered-By.
Header indstil altid Access-Control-Allow-headers "X-Custom-Header, X-Powered-By"
Efter en genstart skal du se resultatet i responsoverskrifter.
Nginx
Et eksempel på tilføjelse af X-Customer-Software og X-My-Custom-overskrift.
add_header Access-Control-Allow-headers "X-Custom-software, X-My-Custom";
Adgang-Kontrol-Expose-skæreborde
De følgende overskrifter er allerede sikker liste. Midler, du behøver ikke at tilføje, hvis du vil udsætte dem.
- udløber
- Pragma
- Cache-Control
- Sidst ændret
- Content-Language
- Indholdstype
Men hvis du har brug for andet end sikkerhedslisten, kan du tillade dem som følger.
Apache
Brug et jokertegn til at afsløre alle overskrifter.
Header indstil altid Access-Control-Expose-headers "*"
Bemærk: Et jokertegn afslører stadig ikke autorisationshovedet, og hvis du har brug for et, skal du nævne eksplicit.
Header indstil altid Access-Control-Expose-headers "Autorisation, *"
Resultatet skal se sådan ud.
Nginx
Hvis du vil afsløre Origin-header.
add_header Access-Control-Expose-Headers "Oprindelse";
Adgang-Kontrol-Max-Age
Ved du, at dataene fra overskrifter til adgangskontrol-tilladt-headere og adgangskontrol-tilladt-metoder kan cachelagres? Det kan cacher i op til 24 timer i Firefox, 2 timer i Chrome (76+).
For at deaktivere cachen kan du holde værdien som -1
Apache
At cache i 15 minutter.
Header indstil altid Access-Control-Max-Age "900"
Som du kan se, er værdien i sekunder.
Nginx
At cache i en time.
add_header Access-Control-Max-Age "3600";
Når det er tilføjet, skal du genstarte Nginx for at se resultaterne.
Access-Control-tillader-legitimationsoplysninger
Der er kun en mulighed at indstille her – sandt. Dette er tilladt, hvis du vil afsløre legitimationsoplysninger såsom cookies, TLS-certifikater, autorisation.
Apache
Header indstil altid Access-Control-Allow-Credentials "rigtigt"
Nginx
add_header Access-Control-Allow-Credentials "rigtigt";
og resultatet.
Bekræftelse af resultaterne
Når de nødvendige overskrifter er tilføjet, kan du enten bruge browserindbyggede udviklerværktøjer eller et online HTTP-headerchecker.
Konklusion
Jeg håber, at ovenstående hjælper dig med at implementere CORS-overskriften i Apache HTTP og Nginx-webserveren for bedre sikkerhed. Du kan også være interesseret i at anvende OWASP anbefalede sikre headere.