Digital markedsføring

CORS-problemer og løsninger for webutviklere: Alt om Cross-Origin Resource Sharing

  • 15 Mart 2025
  • 24 min read
  • Hostragons-laget
CORS-problemer og løsninger for webutviklere: Alt om Cross-Origin Resource Sharing

Denne bloggen gir webutviklere en grundig innføring i Cross-Origin Resource Sharing (CORS) – et tema som ofte gir hodebry i moderne webprosjekter. Her får du forklaring på hva CORS er, hvordan det fungerer, hvorfor det er avgjørende for sikker og fleksibel datadeling, og hvordan du løser typiske CORS-feil. Vi går gjennom praktiske eksempler, typiske feil og effektive løsninger, samt beste praksis for å sikre robust og sikker CORS-konfigurasjon. Guiden hjelper deg å forstå og håndtere CORS-problemer i dine webapplikasjoner, slik at du får en trygg og effektiv utviklingshverdag.

Hva er CORS? Grunnleggende og betydning

Cross-Origin Resource Sharing (CORS) er en sikkerhetsmekanisme i nettlesere som styrer om en webside kan hente ressurser fra et annet domene enn sitt eget. Typisk gjelder dette API-er, fonter, bilder eller annet innhold på tvers av servere. Nettlesere har som standard en "same-origin policy" som blokkerer slike forespørsler for å beskytte brukerens data. CORS tilbyr en trygg måte å omgå denne begrensningen på, slik at moderne webapplikasjoner kan hente data fra flere kilder uten å kompromittere sikkerheten.

Betydningen av CORS har økt med mer avanserte webapplikasjoner, som ofte må hente innhold fra eksterne API-er, CDN-er eller andre tjenester. Uten CORS ville webapper vært sterkt begrenset – det ville ikke vært mulig å lage rike, dynamiske løsninger. CORS gir utviklere fleksibilitet til å hente data fra flere kilder, samtidig som det beskytter brukeren mot uønsket tilgang.

Tabellen under oppsummerer de viktigste CORS-begrepene og hvordan de fungerer:

Begrep Forklaring Betydning
Same-origin policy Blokkerer at skript fra ett domene kan hente data fra et annet domene. Beskytter brukeren mot at skadelig kode får tilgang til sensitive data.
Cross-origin request HTTP-forespørsel fra ett domene til et annet. Gjør det mulig for moderne webapper å hente data fra eksterne API-er og ressurser.
CORS headers Spesielle respons-headere som serveren sender for å tillate cross-origin requests. Forteller nettleseren hvilke domener som får tilgang til ressursene.
Preflight request OPTIONS-forespørsel som nettleseren sender før en komplisert cross-origin request. Lar serveren sjekke forespørselen og bestemme om den skal godkjennes.

CORS fungerer ved at serveren sender spesielle HTTP-headere i responsen, som forteller nettleseren hvilke domener som har lov til å hente ressursen. Den viktigste er Access-Control-Allow-Origin: hvis dette headere inneholder forespørselens domene, eller * (alle), godkjennes forespørselen. Hvis ikke, blokkerer nettleseren og gir en CORS-feil.

    Nøkkelkomponenter i CORS
  • Access-Control-Allow-Origin: Definerer hvilke domener som får tilgang til ressursen.
  • Access-Control-Allow-Methods: Hvilke HTTP-metoder (GET, POST, PUT, DELETE osv.) som er tillatt.
  • Access-Control-Allow-Headers: Hvilke spesielle headere som kan sendes med forespørselen.
  • Access-Control-Allow-Credentials: Om cookies og autentiseringsinfo kan sendes med.
  • Access-Control-Max-Age: Hvor lenge preflight-responsen kan cachelagres.
  • De fleste CORS-feil skyldes feil serverkonfigurasjon. Det er viktig at utviklere setter opp CORS riktig, slik at kun betrodde domener får tilgang. Å følge beste praksis reduserer risikoen for sikkerhetshull.

    Riktig konfigurert CORS er en helt nødvendig del av moderne webapplikasjoner. Det gir både fleksibilitet og trygghet, og sikrer at webapplikasjonen fungerer som ønsket.

    Hvordan fungerer Cross-Origin Resource Sharing?

    Cross-Origin Resource Sharing (CORS) gjør det mulig for nettlesere å tillate at en nettside henter data fra et annet domene enn sitt eget – for eksempel fra en ekstern API. Nettlesere håndhever "same-origin policy", som betyr at man bare får hente data fra samme protokoll, host og port. CORS er utviklet for å gi mer fleksibel, men sikker, samhandling mellom domener.

    CORS har ett hovedmål: å beskytte brukere mot uønsket tilgang til data, samtidig som det gir mulighet for datautveksling mellom tjenester. "Same-origin policy" hindrer at ondsinnede nettsider kan tappe sensitive data – men utviklere trenger ofte å hente data fra andre servere, og da gir CORS en kontrollert måte å åpne for dette.

    Felt Forklaring Eksempel
    Origin Adresse til den som initierer forespørselen. http://eksempel.no
    Access-Control-Allow-Origin Hvilke domener serveren tillater tilgang for. http://eksempel.no, *
    Access-Control-Request-Method Hvilke HTTP-metoder klienten ønsker å bruke. POST, GET
    Access-Control-Allow-Methods Hvilke metoder serveren tillater. POST, GET, OPTIONS

    CORS går ut på at klienten (nettleseren) og serveren kommuniserer via spesielle HTTP-headere. Når klienten sender en cross-origin request, legger nettleseren til Origin-headeren. Serveren sjekker denne og svarer med Access-Control-Allow-Origin hvis det er godkjent. Nettleseren sjekker svaret og godkjenner eller blokkerer forespørselen.

      Slik fungerer CORS:
  • Nettleseren ber om ressurs fra et annet domene.
  • Nettleseren legger til Origin-header.
  • Serveren vurderer Origin-headeren.
  • Serveren svarer med Access-Control-Allow-Origin-header.
  • Nettleseren godkjenner eller blokkerer basert på svaret.
  • Å forstå CORS-mekanismen er avgjørende for utviklere: Feil oppsett kan føre til sikkerhetshull. Riktig bruk sikrer både sikkerhet og funksjonalitet.

    Tillatelsesprosesser

    Tillatelsesprosessen i CORS handler om at serveren spesifiserer hvilke domener som får tilgang. Det gjøres via Access-Control-Allow-Origin-headeren, der man enten oppgir ett eller flere spesifikke domener, eller * for alle. Bruk av * gir stor sikkerhetsrisiko, og bør unngås på sensitive data – det er tryggest å kun tillate utvalgte domener.

    Feil og løsninger

    De vanligste CORS-feilene skyldes manglende eller feil konfigurerte CORS-headere. Har ikke serveren satt Access-Control-Allow-Origin riktig, vil nettleseren blokkere forespørselen. For å løse dette må du kontrollere serveroppsettet og sørge for riktige headere. Dessuten må serveren håndtere preflight (OPTIONS) requests korrekt – mange feil skyldes at disse ikke besvares eller besvares feil.

    Forstå og fikse CORS-feil

    Cross-Origin Resource Sharing (CORS)-feil er en av de mest frustrerende feilene webutviklere møter. De oppstår når en nettside prøver å hente data fra et annet domene, og nettleseren blokkerer forespørselen av sikkerhetsgrunner. Å diagnostisere og løse CORS-feil er kritisk for at webapplikasjoner skal fungere optimalt.

    Første steg er å identifisere feilen. Sjekk feilmeldinger i nettleserens utviklerverktøy (Console): Her ser du ofte hvilken ressurs som ble blokkert og hvorfor. Typiske meldinger som "No 'Access-Control-Allow-Origin' header present on the requested resource" betyr at serveren mangler nødvendig header.

    Feilkode Forklaring Mulige løsninger
    403 Forbidden Serveren forstår forespørselen, men nekter tilgang. Sjekk CORS-konfigurasjon og tillatte domener på serveren.
    500 Internal Server Error Uventet feil på serveren. Sjekk serverloggene. Kan skyldes feil i CORS-konfigurasjon.
    CORS-feil (nettleserkonsoll) Nettleseren blokkerer pga. brudd på CORS-policy. Legg til 'Access-Control-Allow-Origin'-header på serveren.
    ERR_CORS_REQUEST_NOT_HTTP Forespørsel ikke via HTTP/HTTPS. Bruk riktig protokoll.

    Den vanligste løsningen er å legge til nødvendige CORS-headere på serveren. 'Access-Control-Allow-Origin' styrer hvilke domener som får tilgang. Å bruke * åpner for alle, men det er usikkert – kun spesifikke domener bør tillates, f.eks. Access-Control-Allow-Origin: https://mittdomene.no gir kun tilgang til ditt domene.

    Andre typiske årsaker til CORS-feil:

      Feiltyper
  • Manglende eller feil 'Access-Control-Allow-Origin': Serveren har ikke satt riktig header.
  • Problemer med preflight (OPTIONS): Serveren håndterer ikke preflight-requests.
  • Feil med credentials: Cookies eller autentisering sendes feil.
  • Redirects mellom domener: Redirects bryter CORS-policy.
  • Proxy-konfigurasjon: Proxy-serveren videresender ikke CORS-headere.
  • HTTP/HTTPS-mismatch: Forespørsel sendes over usikret protokoll.
  • Du kan også løse noen CORS-problemer på klienten, f.eks. via proxy eller alternative teknikker som JSONP, men dette har ofte sikkerhetsrisiko. Det beste er alltid korrekt serverkonfigurasjon.

    Beste praksis for CORS

    Beste praksis for CORS

    God CORS-konfigurasjon er avgjørende for både sikkerhet og funksjonalitet. Feil oppsett kan åpne for sikkerhetshull og uønsket tilgang til data. Her er de viktigste anbefalingene for trygg og effektiv bruk av CORS:

    Praksis Forklaring Betydning
    Begrens tillatte domener Angi kun betrodde domener i Access-Control-Allow-Origin. Unngå *. Øker sikkerheten og hindrer uautorisert tilgang.
    Bruk credentials kun når nødvendig Bruk Access-Control-Allow-Credentials: true kun for ressurser som krever autentisering, f.eks. cookies. Sikrer at kun autoriserte brukere får tilgang.
    Håndter preflight-requests riktig Svar korrekt på OPTIONS-forespørsler med Access-Control-Allow-Methods og Access-Control-Allow-Headers. Sikrer at komplekse forespørsler (PUT, DELETE, osv.) kan gjennomføres trygt.
    Gi tydelige feilmeldinger Informer brukeren om CORS-feil uten å avsløre sensitive detaljer. Gir bedre brukeropplevelse og reduserer risiko.

    Unngå * i Access-Control-Allow-Origin – det åpner for at alle domener kan hente ressursene dine, og det kan gi hackere tilgang til sensitive data. Angi kun de domener du faktisk ønsker å gi tilgang.

      Steg for god CORS-konfigurasjon:
  • Identifiser hvilke domener som skal ha tilgang.
  • Sett Access-Control-Allow-Origin på serveren med kun disse domener.
  • Bruk Access-Control-Allow-Credentials hvis du trenger å sende cookies eller autentisering.
  • Svar riktig på OPTIONS-forespørsler.
  • Ha gode rutiner for feilhåndtering og varsling.
  • Test og overvåk CORS jevnlig for å avdekke sikkerhetshull.
  • Sørg for at serveren håndterer preflight-requests korrekt. Nettleseren sender OPTIONS-forespørsel før f.eks. PUT eller DELETE, og serveren må svare med Access-Control-Allow-Methods og Access-Control-Allow-Headers. Da får klienten vite at den kan sende den egentlige forespørselen.

    Test og overvåk CORS-konfigurasjonen jevnlig. Prøv ulike scenarioer for å finne potensielle hull, og sjekk serverlogger for forsøk på uautorisert tilgang. Husk at sikkerhet er en kontinuerlig prosess: Oppdater policy og rutiner etter hvert som behovene endrer seg.

    Hva du må passe på med CORS

    Med Cross-Origin Resource Sharing (CORS) er det viktig å være nøye med sikkerhet og funksjonalitet. Feil oppsett kan gi alvorlige sikkerhetshull, slik at uvedkommende får tilgang til sensitive data. Her er de vanligste CORS-fellene – og konsekvensene:

    Feil Forklaring Konsekvens
    Access-Control-Allow-Origin: * Gir tilgang fra alle domener. Sikkerhetshull – hvem som helst kan hente data.
    Access-Control-Allow-Credentials: true sammen med Access-Control-Allow-Origin: * Gir cookies til alle domener (blir blokkert av nettleseren). Uforutsigbar oppførsel og dårlig autentisering.
    Tillatelse for feil HTTP-metoder Bør kun tillate nødvendige metoder (GET, POST). Åpner for alle er farlig. Mulighet for data-manipulasjon og sikkerhetsbrudd.
    Aksepterer alle headere Bør kun akseptere nødvendige headere. Sikkerhetsrisiko og unødvendig datalevering.

    Preflight-requests må håndteres riktig: Nettleseren sender OPTIONS-forespørsel før den egentlige forespørselen for å sjekke CORS-policy. Svarer ikke serveren korrekt, blir forespørselen blokkert.

    Tips for trygg CORS:

    • Sett Access-Control-Allow-Origin kun for betrodde domener.
    • Bruk Access-Control-Allow-Credentials kun når nødvendig.
    • Håndter preflight-requests korrekt (OPTIONS).
    • Tillat kun nødvendige HTTP-metoder og headere.
    • Oppdater og test CORS-konfigurasjonen jevnlig.
    • Bruk utviklerverktøy for å finne og rette CORS-feil.

    Bruk nettleserens utviklerverktøy til å feilsøke CORS-problemer: Console og Network viser hvilke headere som mangler eller er feil. Sjekk også serverlogger for å se om policyen fungerer som den skal. En riktig CORS-policy gir både trygghet og god brukeropplevelse.

    Ofte stilte spørsmål

    Hvorfor er CORS viktig, og hvordan påvirker det webutviklingen?

    CORS beskytter brukeren mot uautorisert tilgang og sikrer at sensitive data ikke lekker til uvedkommende. Det gir kontrollert datadeling mellom domener, og er essensielt for moderne webapplikasjoner og sikkerhetsrutiner. Utviklere må forstå CORS for å unngå sikkerhetshull og bygge stabile, sikre løsninger.

    Hvordan implementerer nettlesere CORS? Hvilke HTTP-headere brukes?

    Når en webside ber om data fra et annet domene, legger nettleseren til Origin-header. Serveren svarer med Access-Control-Allow-Origin. Nettleseren sammenligner og godkjenner eller blokkerer forespørselen. Andre headere som Access-Control-Allow-Methods, Access-Control-Allow-Headers og Access-Control-Allow-Credentials styrer hvilke metoder, headere og autentiseringsinfo som er tillatt.

    Hva er de vanligste årsakene til CORS-feil, og hvordan finner jeg dem?

    Typiske årsaker er manglende Access-Control-Allow-Origin-header, feil port eller protokoll, preflight-problemer og feil håndtering av credentials. Bruk nettleserens utviklerverktøy (Console og Network) for å se feilmeldinger og sjekk headere i responsen.

    Hva er en "preflight request", og når skjer det?

    En preflight-request er en OPTIONS-forespørsel som nettleseren sender før den egentlige forespørselen for å finne ut hvilke metoder og headere som er tillatt. Det skjer når forespørselen bruker andre metoder enn GET/POST, eller har spesielle headere. Serveren må svare korrekt for at forespørselen skal gå gjennom.

    Kan jeg deaktivere eller omgå CORS? Hva er risikoen?

    CORS håndheves av nettleseren, og serveren styrer hvilke domener som får tilgang. Å deaktivere CORS anbefales ikke, da det gir åpne sikkerhetshull. Under utvikling kan du omgå CORS med proxy eller browser-utvidelser, men dette må aldri brukes i produksjon.

    Hvilke CORS-sikkerhetshull finnes, og hvordan unngår jeg dem?

    Det største problemet er Access-Control-Allow-Origin: * – da kan hvem som helst hente data. Unngå dette, og bruk kun spesifikke domener. Vær også forsiktig med Access-Control-Allow-Credentials. Bruk CSRF-beskyttelse og oppdater policy jevnlig.

    Hvordan setter jeg opp CORS på serveren? Hva er beste løsning?

    Du kan sette headere manuelt, bruke middleware eller konfigurere webserveren (f.eks. Nginx eller Apache). Valg av løsning avhenger av teknologi og behov. Middleware gir fleksibilitet, mens manuell konfigurasjon er godt nok for enkle løsninger.

    Hvordan håndterer jeg CORS i ulike miljøer (dev, test, prod)?

    Bruk miljøvariabler eller separate konfigurasjonsfiler for CORS. I utvikling kan du åpne for flere domener (*), men i produksjon må du begrense til kun nødvendige domener. Testmiljø bør speile produksjon for å sikre trygg policy.

    Bu yazıyı paylaş:

    Hostragons-laget

    Hosting, sunucu ve alan adı konularında uzman ekibimizden güncel rehberler. Projeniz için doğru çözümü birlikte bulalım.

    Kontakt oss