Nginx

Hvordan bruke CORS med Nginx

Hvordan bruke CORS med Nginx

Hva er CORS

CORS, også kjent som ressursdeling på tvers av opprinnelser, er en teknikk som brukes i moderne nettlesere som kontrollerer tilgang til ressurser som er vert på en webserver. CORS bruker flere overskrifter som opprinnelse, tilgangskontroll-opprinnelse og mange flere for å avgjøre om den forespurte ressursen har tillatelse til å bli sendt til nettleseren. Hovedformålet med CORS er å forhindre at en webapplikasjon som kjører i en nettleser, får tilgang til ressurser som er vert i en annen opprinnelse når det ikke er tillatelse, hva det betyr at webapplikasjonen ikke kan laste ned ressurser, for eksempel bilder, skript, css som noe innhold osv. når de ikke er vert med samme opprinnelse (vanligvis skal alle være i samme domene) som webapplikasjonen, med mindre serveren er konfigurert til å tillate denne oppførselen. Ved å ha denne implementeringen i en nettleser kan brukere beskytte dataene sine fra uautoriserte parter. En hacker kan i hemmelighet endre en webside mens den er midt i forbindelsen for å forstyrre brukerens virksomhet eller få tilgang til verdifulle data. Det er imidlertid fordeler med CORS, for eksempel at det lar utviklere laste ressurser fra en annen opprinnelse på grunn av kostnadseffektivitet, eller bare bekvemmelighet. I så fall må de endre webserveren for å tillate slike forespørsler. Denne artikkelen demonstrerer hvordan du enkelt kan få det gjort på en Nginx-webserver.

Hva utløser en CORS-forespørsel

Ikke alle forespørslene utløser en CORS-forespørsel, da ressursene vanligvis er vert i samme opprinnelse som webapplikasjonen. Hvis det er annerledes, blir CORS utløst. CORS har to typer forespørsler, enkel forespørsel og CORS pre-flighted forespørsel.

Simple Request fungerer som en vanlig forespørsel, nettleseren sender en forespørsel til serveren om å laste ned en bestemt ressurs når brukeren startet den, så sjekker webserveren forespørselens opprinnelse, sammenligner den med reglene på webserveren, hvis den er matchet, leveres ressursen. Denne forespørselstypen bruker OIRIGN- og ACCESS-CONTROL-ALLOW-ORIGIN-overskrifter for å bestemme om ressursen skal leveres eller ikke. Enkel forespørsel utløses bare hvis forespørselsmetoder som GET, HEAD, POST brukes, og overskrifter som Accept, Accept-Language, Content-Language, Content-Type, DPR, Downlink, Save-Data, Viewport-Width, Width brukes. Selv da utløser ikke alle innholdstyper en enkel forespørsel. Her utløser bare skjema kodingstyper en enkel forespørsel.

Forespørselstypen før flyet er ganske annerledes, da det ikke er direkte tilgang til ressursene i første runde. Når de ovennevnte forholdene endres på en eller annen måte, enten ved å bruke en annen forespørselstittel eller en annen innholdstype, utløses en forhåndsflyttet forespørsel. I forflyttede forespørsler må nettleseren først sørge for at den har tilgang til ressursen ved å kommunisere med nettleseren, deretter når nettleseren svarte med ok (HTTP 200) svar, sender den en ny forespørsel om å laste ned ressursen. Den bruker HTTP OPTION forespørselsmetode for å starte den første forespørselen, deretter bruker den GET, POST som forespørselstyper for å laste ned ressursene.

Hvordan konfigurere Nginx til å støtte CORS-forespørsler

Denne delen viser hvordan du konfigurerer en nginx-webserver for å tillate ressursdeling på tvers av opprinnelse. Dette kan bare gjøres hvis utvikleren har tilgang til webserveren, da det innebærer å endre konfigurasjonsfilen til Nginx.

Bruk følgende enkle kodebit for å tillate CORS-forespørsler. Dette må kopieres til standardfilen til nginx-tjenesten i Ubuntu eller en hvilken som helst annen plattform.

plassering \
hvis ($ request_method = 'OPTIONS')
add_header 'Access-Control-Allow-Origin' 'https: // localhost;
add_header 'Access-Control-Allow-Methods "POST, OPTIONS';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type "text / plain; charset = utf-8';
retur 204;

hvis ($ request_method = 'POST')
add_header 'Access-Control-Allow-Origin "https: // localhost;
add_header 'Access-Control-Allow-Methods' 'POST';

Den grunnleggende kodebiten går som ovenfor. Den inneholder direktiver som request_method, add_header for å identifisere forespørselstypen, og angi overskriften på svaret slik at nettleseren skal lese henholdsvis. Access-control-allow-origin header definerer hvilket opprinnelse ressursen har tilgang til, for eksempel hvis en webapplikasjon vert i github ønsker å få tilgang til et bilde som er vert i myOwnServer.com, så skal github-URL brukes som verdien av Access-control-allow-origin-direktivet i myOwnServer.com, så når webapplikasjonen som er vert i github sender forespørsler til myOwnServer.com for å laste ned bildefilen, får alle disse forespurte tillatelse. Access-control-allow-method header definerer hvilken forespørselstyper webapplikasjonen som sender forespørslene støtter, så er resten av topptekstene for maksimal alder for å cache forespørslene og den støttede innholdstypen.

Som beskrevet ovenfor, når OPTION-forespørselen ble fullført, sender nettleseren en annen forespørsel om å laste ned ressursene hvis den første forespørselen var vellykket, dens overskrifter settes i den første forespørselsmetoden hvis parentes.

Annet enn de nevnte direktivene, er det noen andre viktige direktiver i Nginx som kan brukes i CORS-forespørsler. Et av de viktigste direktivene er tilgangskontroll-tillat-overskrifter. Det den gjør er å angi svarhode med tillatte overskriftsnavn for nettleseren for å bekrefte. En webapplikasjon kan ha sine egne overskrifter for forskjellige formål, og hvis slike overskrifter er til stede i de påfølgende forespørslene etter den første OPTIONS-forespørselen, bør alle disse overskriftene tillates av webserveren før den forespurte ressursen deles.

Det er viktig at denne kodebiten er på rett sted i Nginx-standardfilen, fordi Nginx utfører forskjellige stedsblokker avhengig av den matchede URL-en. Hvis en slik stedsblokk ikke inneholder denne kodebiten, blir den ikke utført i det hele tatt, og derfor er det viktig å bruke dette i alle stedsblokker for den sikre siden. Noen av de viktige plasseringsblokkene er Images, PHP (~ \.php $), CSS, etc ... blokker.

Når den førnevnte kodebiten er lagret, lagrer du Nginx-filen og laster Nginx-tjenesten på nytt til endringer for å tre i kraft.

Konklusjon

CORS, er kjent som ressursdeling på tvers av opprinnelser, og er en teknikk for å kontrollere tilgangen til ressursene. Disse ressursene kan være hvilken som helst fil fra bilde til en javascript-fil. Hovedformålet med CORS er å skjerpe sikkerheten til webapplikasjoner for å forhindre angrep fra mennesker i midten. Imidlertid kan CORS også ha fordeler. I så fall må CORS slås på, da det ikke er tillatt som standard. Den grunnleggende CORS-forespørselstypen er enkel forespørselstype, den bruker bare ORIGIN- og ACCESS-CONTROL-ALLOW-ORIGIN-direktiver, og med den hjelpen kan Nginx gi tillatelse til nettleseren til å få tilgang til den etterspurte ressursen, avhengig av opprinnelse. Uansett er CORS ganske nyttig og bør brukes forsiktig.

Beste spillkonsollemulatorer for Linux
Denne artikkelen vil liste opp populære programvare for spillkonsollemulering tilgjengelig for Linux. Emulation er et programvarekompatibilitetslag so...
Beste Linux Distros for spill i 2021
Linux-operativsystemet har kommet langt fra det originale, enkle, serverbaserte utseendet. Dette operativsystemet har forbedret seg enormt de siste år...
Hvordan fange opp og streame spilløkten din på Linux
Tidligere ble spill bare ansett som en hobby, men med tiden så spillindustrien en enorm vekst når det gjelder teknologi og antall spillere. Spillpubli...