Cors Nginx

Cors Nginx

“Ressursdeling på tvers av opprinnelse er kjent av forkortelsen Cors. Når noen opererer på et annet domene, vil serveren bruke denne metoden for å kontrollere tilgangen til tjenestene. Det skjer midt på en server og en nettleser. Ved hjelp av HTTP Access-Control-Request-* overskrifter overfører nettleseren noen data. Basert på de mottatte overskriftene bestemmer serveren hva han skal sende tilbake som tilgangskontroll-allow-* Headers. Nettleseren er nå klar over sin evne eller manglende evne til å få tilgang til serverressurser. Nettleseren kan av og til utføre en pre-flight, som er en validering, før du kommer med den faktiske forespørselen. Overskriftene kan ikke endres med frontkode i nettleseren. Overskriftene kan endres med koden på serversiden. Imidlertid må det utføres av en nedstrømstjeneste som applikasjonen ikke kan se, for eksempel en API -gateway eller HTTP -serveren.

HTTP-spørsmål som er laget av skript er begrenset av nettlesere for sikkerhetsproblemer. Prinsippet i samme opprinnelse blir for eksempel fulgt både Fetch API og XMLHTTPREQUEST. Dette innebærer at en webapplikasjon som bruker disse API -ene bare kan komme med forespørsler om ressurser fra opprinnelsen den ble lastet med med mindre responsen fra andre kilder har de aktuelle CORS -overskriftene.”

Utløser og typer tigger en CORS -forespørsel

Siden ressursene ofte er vertskap i samme kilde som webapplikasjonen, resulterer ikke alle forespørsler i en CORS -forespørsel. CORS er aktivert hvis det er annerledes. Enkle forespørsler og CORS forhåndsfluktede forespørsler er to forskjellige former for CORS-forespørsler.

Enkel forespørsel CORS

Når en bruker initierer en enkel forespørsel, overfører nettleseren deres forespørselen til serveren. Serveren undersøker deretter kilden til forespørselen, analyserer den til dens regler og gir den forespurte ressursen hvis den samsvarer med. Denne forespørselstypen bruker opprinnelse og tilgangskontroll-origin-overskrifter for å avgjøre om ressursen skal gis. De eneste forespørselsypene som vil resultere i en enkel forespørsel er Get, Head og Post, så vel som overskriftene som aksepterespråk, DPR, Downlink, Save-Data, Content-Type, Content-Language, Viewport-Bidth og Bredde. Selv ennå, ikke alle innholdstyper resulterer i en enkel forespørsel. Her er det bare visse former for formkoding som forårsaker en enkel forespørsel.

Forhåndsflukt Cors

Forhåndsflyvninger er noe annerledes fordi det ikke er en øyeblikkelig forbindelse til tjenestene i den første runden. En forhåndsfluktforespørsel initieres når forholdene blir endret på en eller annen måte, for eksempel ved å bruke en modifisert forespørselsoverskrift eller en alternativ innholdstype. I forhåndsfluktforespørsler bekrefter søkemotoren først at den kan få tilgang til ressursen ved å tilsvare nettleseren, og når nettleseren svarer med et OK (http 200) svar, sender den deretter en annen forespørsel om å anskaffe ressursen. Først ber den en forespørsel ved hjelp av HTTP -alternativmetoden, og deretter laster den ned ressurser ved å bruke forespørselstyper som ligner på metoder få og post.

Forutsetning av CORS i Nginx

For det første er 4xx -svar uforenlig med Nginxs standard add header -direktiv. Det mer angitte headers -direktivet, som også fungerer med 4xx -svar, kan brukes til å legge tilpassede overskrifter til dem, men for å gjøre det, må vi først installere Nginx -overskrifter -modulen.

Nginx-Extras-pakken kan lett installeres hvis du bruker en Debian-distribusjon, til tross for dokumentasjonens anbefaling om at du bygger Nginx fra kilde ved hjelp av modulen:

Viktigheten av å muliggjøre CORS på nginx

JavaScript som utfører på klientens nettleser trenger vanligvis ikke tilgang til tjenester utenfor sitt domene. Som et resultat kan det å slå av CORS være en klok sikkerhetsforholdsregler.

For at slik funksjonalitet skal fungere på backend, må CORS imidlertid være aktivert. Dette er fordi legitim JavaScript -kode av og til trenger å sende en forespørsel til en server utover sitt domene. Et eget protokoll, domenenavn eller port kan alle omtales som det samme domenet.

Hvordan aktivere CORS på Nginx i Ubuntu 20.04

La oss gå videre til hoveddelen. Åpne den foretrukne redaktøren, VIM, og naviger deretter til Nginx -konfigurasjonen:

Skriv inn neste oppføring i NGINX -konfigurasjonens serverblokk.

Start Nginx på nytt etter det, og lagre deretter konfigurasjonsfilen.

CORS kan aktiveres ved å bruke Curl -kommandoen for å bekrefte. Følgende utgang skal være resultat av dette:

Hvordan du skal takle CORS -feilene i en suler

Serversiden er der CORS implementeres; Klientsiden kan ikke endre hvordan det fungerer. Brukere kan forhindres fra å bruke delte ressurser ved å bruke CORS -atferden, ofte kjent som CORS -feilen. Dette er ikke en feil, men snarere en sikkerhetsmekanisme for å beskytte deg eller nettstedet du besøker mot et potensielt brudd på sikkerhet. Klientsiden-implementering av HTTP-overskrifter som er utilstrekkelige eller feil kan føre til dette problemet (e.g., mangler API -nøkler og annen autorisasjonsinformasjon). Vi har noen unike løsninger på disse feilene.

  • Forespørsler om kryss-opprinnelse kan komme ved hjelp av en CORS-proxy. Forespørselen din blir videresendt gjennom proxy -laget, som er blind for opprinnelsen. Følgelig, selv om forespørselen stammer fra en uidentifisert opprinnelse, gjør CORS -proxy den som om den kommer fra et tillatt sted.
  • Bruken av en serverløs funksjon er et mer populært middel. Det er en annen tilnærming for å proxisere forespørslene dine, men til tross for tilnærmingen beskrevet ovenfor, kan du opprette mikroinfrastrukturen din for å få tilgang til en webtjeneste og overføre data til et API-endepunkt.

Konklusjon

Cors 'hovedmål er å gjøre online applikasjoner sikrere for å hindre mann-i-midten angrep. CORS kan ennå være fordelaktig også. Siden det ikke er aktivert som standard, må CORS være aktivert i den situasjonen. Med bruk av opprinnelse og direktiver med tilgangskontroll-Allow-Origin, som er de eneste forespørselsypene som brukes av Basic CORS Request-typen, kan Nginx gi nettlesertillatelsen til å få tilgang til den forespurte ressursen basert på opprinnelsen. CORS er et flott verktøy som bør brukes nøye i begge tilfeller.