Sobes.tech
Junior

Kas ir CORS?

sobes.tech AI

Atbilde no AI

CORS (Cross-Origin Resource Sharing) ir mekanisms, kas ļauj tīmekļa lapām pieprasīt resursus no cita domēna, porta vai protokola, kas atšķiras no tā, no kura tika ielādēta pati lapa. Tas tiek darīts ar papildu HTTP galveni.

Pēc noklusējuma pārlūkprogrammas piemēro Same-Origin Policy (SOP), kas aizliedz skriptiem, kas darbojas vienā lapā, piekļūt datiem no cita avota (doma, ports, protokols). CORS mazinās šo politiku kontrolēti, dodot serverim iespēju skaidri atļaut cross-domain pieprasījumus.

Kā darbojas CORS:

  1. Vienkāršs pieprasījums: Ja pieprasījums atbilst noteiktiem kritērijiem (piemēram, tiek izmantota GET vai POST metode, ir atļautas tikai noteiktas galvenes), pārlūkprogramma tieši nosūta pieprasījumu ar papildu galveni Origin, kas norāda pieprasījuma avotu. Serveris, saņemot šo galveni, var atbildēt ar Access-Control-Allow-Origin, norādot atļauto avotu.
  2. Preflight pieprasījums: Nevienkāršiem pieprasījumiem (piemēram, ar PUT, DELETE metodēm vai ar lietotāja galvenēm), pārlūkprogramma vispirms nosūta priekšpārbaudes (preflight) OPTIONS pieprasījumu. Šis pieprasījums jautā serverim, vai ir atļauts nosūtīt galveno pieprasījumu. Servers atbild ar galvenēm, kas norāda atļautos metodus, galvenes un avotus. Ja preflight ir veiksmīgs, pārlūkprogramma nosūta pašu pieprasījumu.

Galvenās CORS galvenes:

  • Origin: Nosūta pārlūkprogramma pieprasījumā, norādot avotu (doma, ports, protokols), kas iniciēja pieprasījumu.
  • Access-Control-Allow-Origin: Nosūta serveris atbildē, norādot avotu, kam ir atļauts saņemt atbildi. Var būt konkrēta doma, * (jebkurš avots), vai dinamiski ģenerēts servera pēc Origin galvenes.
  • Access-Control-Allow-Methods: Nosūta serveris atbildē uz preflight pieprasījumu, norādot atļautos HTTP metodus (GET, POST, PUT, DELETE utt.).
  • Access-Control-Allow-Headers: Nosūta serveris atbildē uz preflight pieprasījumu, norādot atļautās pieprasījuma galvenes.
  • Access-Control-Allow-Credentials: Nosūta serveris atbildē, norādot, vai ir atļauts pieņemt sīkdatnes un citus autentifikācijas datus pieprasījumā.

Piemērs servera atbildes galvenēm, kas atļauj pieprasījumus no https://example.com:

Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type, Authorization

CORS ir nepieciešams daudzu tīmekļa lietojumprogrammu pareizai darbībai, kas izmanto cross-origin AJAX pieprasījumus, piemēram, API mijiedarbība, fontu ielāde, web fontu izmantošana no CDN un tā tālāk. Pareiza CORS iestatīšana serverī ir kritiska drošībai un funkcionalitātei.