Nginx

Sådan bruges CORS med Nginx

Sådan bruges CORS med Nginx

Hvad er CORS

CORS, også kendt som deling af ressourcer på tværs af oprindelser, er en teknik, der bruges i moderne webbrowsere, der styrer adgangen til ressourcer, der hostes på en webserver. CORS bruger yderligere overskrifter såsom oprindelse, adgangskontroloprindelse og mange flere til at afgøre, om den anmodede ressource har tilladelse til at blive sendt til browseren. Det primære formål med CORS er at forhindre en webapplikation, der kører i en webbrowser, i at få adgang til ressourcer, der hostes i en anden oprindelse, når der ikke er nogen tilladelse, hvad det betyder, at webapplikationen ikke kan downloade ressourcer, såsom billeder, scripts, css som ethvert indhold osv. når de ikke hostes i samme oprindelse (normalt skal alle være i samme domæne) som webapplikationen, medmindre serveren er konfigureret til at tillade denne adfærd. Ved at have denne implementering i en webbrowser kan brugerne beskytte deres data mod uautoriserede parter. En hacker kan hemmeligt ændre en webside, mens den er midt i forbindelsen for at forstyrre brugerens forretning eller få adgang til værdifulde data. Der er dog også fordele ved CORS, som det giver udviklere mulighed for at indlæse ressourcer fra en anden oprindelse på grund af omkostningseffektivitet eller simpelthen bekvemmelighed. I så fald skal de ændre deres webserver for at tillade sådanne anmodninger. Denne artikel viser, hvordan du nemt får det gjort på en Nginx-webserver.

Hvad udløser en CORS-anmodning

Ikke alle anmodninger udløser en CORS-anmodning, da ressourcerne normalt hostes i samme oprindelse som webapplikationen. Hvis det er anderledes, udløses CORS. CORS har to typer anmodninger, simpel anmodning og CORS forudgående flyvning.

Simple Request fungerer som en almindelig anmodning, webbrowseren sender en anmodning til serveren om at downloade en bestemt ressource, når brugeren startede den, og derefter kontrollerer webserveren anmodningens oprindelse, sammenligner den med reglerne på webserveren, hvis den er matchet, leveres ressourcen. Denne anmodningstype bruger OIRIGN- og ACCESS-CONTROL-ALLOW-ORIGIN-overskrifter til at bestemme, om ressourcen skal leveres eller ej. Enkel anmodning udløses kun, hvis anmodningsmetoder som GET, HEAD, POST bruges, og overskrifter som Accept, Accept-Language, Content-Language, Content-Type, DPR, Downlink, Save-Data, Viewport-Width, Width bruges. Selv da udløser ikke alle indholdstyper en simpel anmodning. Her udløser kun formkodningstyper en simpel anmodning.

Forudbestilt anmodningstype er ret anderledes, da der ikke er nogen direkte adgang til ressourcerne i første runde. Når de førnævnte betingelser ændres på en eller anden måde, enten ved hjælp af en anden anmodningsoverskrift eller en anden indholdstype, udløses en forudgående flyvning. I forudgående anmodninger skal webbrowseren først sørge for, at den kan få adgang til ressourcen ved at kommunikere med webbrowseren, derefter når webbrowseren svarede med okay (HTTP 200) svar, så sender den en anden anmodning om at downloade ressourcen. Det bruger HTTP OPTION-anmodningsmetode til at starte den første anmodning, derefter bruger den GET, POST-lignende anmodningstyper til at downloade ressourcerne.

Sådan konfigureres Nginx til at understøtte CORS-anmodninger

Dette afsnit demonstrerer, hvordan du konfigurerer en nginx-webserver til at tillade deling af ressourcer på tværs af oprindelse. Dette kan kun gøres, hvis udvikleren har adgang til webserveren, da det indebærer ændring af konfigurationsfilen til Nginx.

Brug følgende enkle kodestykke til at tillade CORS-anmodninger. Dette skal kopieres til standardfilen til nginx-tjenesten i Ubuntu eller enhver anden platform.

Beliggenhed \
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 "tekst / almindelig; charset = utf-8';
returnere 204;

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

Det grundlæggende kodestykke går som ovenfor. Den indeholder direktiver som request_method, add_header for at identificere anmodningstypen og indstille overskriften på svaret, som browseren skal læse henholdsvis. Adgangskontrol-tillad oprindelsesoverskrift definerer, hvilken oprindelse ressourcen har adgang til, for eksempel hvis en webapplikation, der er hostet i github, ønsker at få adgang til et billede, der hostes i myOwnServer.com, så skal githubs URL bruges som værdien af ​​adgangskontrol-tillad-oprindelsesdirektivet i myOwnServer.com, så når webapplikationen hostet i github sender anmodninger til myOwnServer.com for at downloade billedfilen, får alle disse anmodede tilladelse. Adgangskontrol-tillad-metodeoverskrift definerer, hvilken anmodningstype webapplikationen, der sender anmodningerne, understøtter, så resten af ​​overskrifterne er for sin maksimale alder til at cache anmodningerne og den understøttede indholdstype.

Som beskrevet ovenfor sender browseren, når OPTION-anmodningen er afsluttet, en anden anmodning om at downloade ressourcerne, hvis den første anmodning lykkedes, dens overskrifter indstilles i den første anmodning_metode, hvis parenteser.

Bortset fra de førnævnte direktiver er der nogle andre vigtige direktiver i Nginx, der kan bruges i CORS-anmodninger. Et af de vigtigste direktiver er adgangskontrol-tillad-headere, hvad det gør er at indstille svarhovedet med tilladte headernavne, som browseren kan bekræfte. En webapplikation kan have sine egne overskrifter til forskellige formål, og hvis sådanne overskrifter er til stede i de efterfølgende anmodninger efter den oprindelige OPTIONS-anmodning, skal alle disse overskrifter have tilladelse af webserveren, før den anmodede ressource deles.

Det er vigtigt, at dette kodestykke skal være på det rigtige sted i Nginx-standardfilen, fordi Nginx udfører forskellige placeringsblokke afhængigt af den matchede URL, hvis en sådan placeringsblok ikke indeholder dette kodestykke, så udføres det slet ikke, og derfor er det vigtigt at bruge dette i alle placeringsblokke for den sikre side. Nogle af de vigtige placeringsblokke er Images, PHP (~ \.php $), CSS osv. ... blokke.

Når det førnævnte kodestykke er gemt, skal du gemme Nginx-filen og genindlæse Nginx-tjenesten til ændringer for at træde i kraft.

Konklusion

CORS, er kendt som deling af ressourcer på tværs af oprindelser og er en teknik til at kontrollere adgangen til ressourcer. Disse ressourcer kan være enhver fil fra billede til en javascript-fil. Det primære formål med CORS er at stramme sikkerheden for webapplikationer for at forhindre menneske i midten angreb. CORS kan dog også have fordele. I så fald skal CORS være tændt, da det ikke er tilladt som standard. Den grundlæggende CORS-anmodningstype er enkel anmodningstype, den bruger kun ORIGIN- og ACCESS-CONTROL-ALLOW-ORIGIN-direktiver, og med den hjælp kan Nginx give tilladelse til webbrowseren til at få adgang til den ønskede ressource afhængigt af oprindelsen. Uanset hvad CORS er ret nyttigt og bør bruges omhyggeligt.

Mus WinMouse giver dig mulighed for at tilpasse og forbedre musemarkørens bevægelse på Windows-pc
WinMouse giver dig mulighed for at tilpasse og forbedre musemarkørens bevægelse på Windows-pc
Hvis du vil forbedre standardfunktionerne for din musemarkør, skal du bruge freeware WinMouse. Det tilføjer flere funktioner, der hjælper dig med at f...
Mus Museklik på venstre museknap fungerer ikke på Windows 10
Museklik på venstre museknap fungerer ikke på Windows 10
Hvis du bruger en dedikeret mus med din bærbare computer eller stationære computer, men musens venstre-klik-knap fungerer ikke på Windows 10/8/7 af en...
Mus Markøren hopper eller bevæger sig tilfældigt, mens han skriver i Windows 10
Markøren hopper eller bevæger sig tilfældigt, mens han skriver i Windows 10
Hvis du finder ud af, at din musemarkør hopper eller bevæger sig alene, automatisk tilfældigt, mens du skriver Windows-bærbar computer eller computer,...