Rešitve napak

Težave in Rešitve pri Delitvi Virov Čez Mejo (CORS)

  • 14 min branja
  • Ekipa Hostragons
Težave in Rešitve pri Delitvi Virov Čez Mejo (CORS)

Ta blog objava se osredotoča na težave s Cross-Origin Resource Sharing (CORS), s katerimi se spletni razvijalci pogosto srečujejo. Začne z razlago, kaj je CORS, njegovih osnovnih principov ter zakaj je pomemben. Nato podrobno preučuje, kako se pojavljajo napake CORS in katere metode lahko uporabimo za njihovo odpravo. Poleg tega izpostavlja najboljše prakse ter ključne točke, na katere je treba biti pozoren za varno in učinkovito implementacijo CORS. Ta vodnik je namenjen temu, da vam pomaga razumeti in reševati težave, povezane s CORS v vaših spletnih aplikacijah.

Kaj je CORS? Osnovni podatki in pomen

Cross-Origin Resource Sharing (CORS) je varnostni mehanizem, ki spletnim brskalnikom omogoča, da spletna stran dostopa do virov iz druge domene. Osnovno ureja dostop spletnih aplikacij do virov (npr. API-jev, pisav, slik), ki niso na isti domeni. Brskalniki po načelu enotne izvorne politike (Same-Origin Policy) privzeto blokirajo zahteve od ene domene do druge. CORS ponuja varen način za premagovanje te omejitve.

Pomen CORS izhaja iz kompleksnosti sodobnih spletnih aplikacij in potrebe po črpanju podatkov iz različnih virov. Številne spletne aplikacije temeljijo na API-jih, CDN-jih ali drugih zunanjih virih, ki so gostovani na različnih strežnikih. Brez CORS dostop teh virov ne bi bil možen, kar bi funkcionalnost spletnih aplikacij močno omejilo. CORS razvijalcem omogoča prilagodljivost pri črpanju podatkov iz različnih virov, hkrati pa ohranja varnost spletnih aplikacij.

Naslednja tabela povzema osnovne pojme in delovanje CORS:

Kaj je CORS? Osnovni podatki in pomen
Pojem Opis Pomen
Enotna izvorna politika (Same-Origin Policy) Brskalniki preprečujejo skriptam, naloženim iz enega vira, da dostopajo do virov iz drugega izvora. Omogoča varnost in preprečuje dostop zlonamernih skript do občutljivih podatkov.
Zahteva za dostop do virov iz druge domene (Cross-Origin Request) HTTP zahteva, ki jo spletna stran pošlje iz svoje domene v drugo domeno. Omogoča sodobnim spletnim aplikacijam dostop do različnih API-jev in virov.
CORS glave (CORS Headers) Posebne glave, ki jih strežnik doda v odziv in tako dovoli zahteve iz drugih domen. Določajo, katera domena lahko dostopa do virov na strežniku.
Predhodna zahteva (Preflight Request) Zahteva, ki jo brskalnik pošlje strežniku z metodo OPTIONS, preden izvede kompleksne zahteve za dostop do virov iz druge domene. Omogoča strežniku preverjanje in sprejemanje (ali zavrnitev) zahtev.

Osnovno delovanje CORS temelji na tem, da spletni strežnik prek HTTP odzivnih glav brskalniku sporoči, do katerih virov lahko dovoli dostop. Strežnik s pomočjo glave Access-Control-Allow-Origin določi, katere domene lahko dostopajo do njegovih virov. Če je v tej glavi navedena izvorna domena ali * (vsi), brskalnik zahtevo sprejme. V nasprotnem primeru brskalnik zahtevo blokira in nastane CORS napaka.

    Osnovni elementi CORS

  • Access-Control-Allow-Origin: Določa, katere domene lahko dostopajo do virov.
  • Access-Control-Allow-Methods: Določa, katere HTTP metode (GET, POST, PUT, DELETE itd.) so dovoljene.
  • Access-Control-Allow-Headers: Določa, katere posebne glave smejo biti vključene v zahtevo.
  • Access-Control-Allow-Credentials: Določa, ali smejo biti vključeni podatki o identiteti (piškotki, avtentikacijske glave).
  • Access-Control-Max-Age: Določa, kako dolgo smejo biti rezultati predhodne zahteve shranjeni v predpomnilniku.

CORS napake so najpogosteje posledica napačne strežniške konfiguracije. Pomembno je, da razvijalci strežnike nastavijo pravilno, da dovolijo dostop virom samo zaupanja vrednim domenam. Poleg tega upoštevanje najboljših praks pri CORS pomaga zmanjšati varnostna tveganja.

CORS je nepogrešljiv del sodobnih spletnih aplikacij, saj omogoča fleksibilnost pri pridobivanju podatkov iz različnih virov in hkrati varuje aplikacijo. Pravilno nastavljen CORS poveča funkcionalnost spletnih aplikacij in izboljša uporabniško izkušnjo.

Delovanje Cross-Origin Resource Sharing

Cross-Origin Resource Sharing (CORS) je mehanizem, ki spletnim brskalnikom omogoča, da spletne strani iz enega vira (origin) dostopajo do virov na drugem viru. Brskalniki običajno izvajajo načelo istega vira (same-origin policy), kar pomeni, da lahko spletna stran dostopa le do virov, ki imajo enak protokol, gostitelja in vrata. CORS je zasnovan, da preseže to omejitev in omogoči varno izmenjavo podatkov med različnimi viri.

Glavni namen CORS je zagotavljanje varnosti spletnih aplikacij. Načelo istega vira preprečuje zlonamernim spletnim mestom dostop do občutljivih podatkov uporabnikov. Vendar pa je v nekaterih primerih deljenje podatkov med različnimi viri nujno. Na primer, spletna aplikacija mora včasih dostopati do API-ja na drugem strežniku. CORS v takšnih scenarijih ponuja varno rešitev.

Delovanje Cross-Origin Resource Sharing
Polje Opis Primer
Origin Naslov vira, ki je sprožil zahtevo. http://example.com
Access-Control-Allow-Origin Označuje, do katerih virov strežnik dovoljuje dostop. http://example.com, *
Access-Control-Request-Method Označuje, kateri HTTP metodo želi odjemalec uporabiti. POST, GET
Access-Control-Allow-Methods Označuje, katere HTTP metode strežnik dovoljuje. POST, GET, OPTIONS

CORS deluje preko niza HTTP glave med odjemalcem (brskalnikom) in strežnikom. Ko odjemalec izvede zahtevo med viri, brskalnik avtomatsko zahtevi doda glavo Origin. Strežnik to glavo preveri in se odloči, ali bo zahtevo dovolil. Če strežnik dovoljuje zahtevo, odgovori z glavo Access-Control-Allow-Origin, ki označuje, kateri viri lahko dostopajo do zahteve.

    Postopek CORS

  1. Brskalnik zahteva vir z drugega vira.
  2. Brskalnik zahtevi doda glavo Origin.
  3. Strežnik oceni glavo Origin.
  4. Strežnik odgovori z glavo Access-Control-Allow-Origin.
  5. Brskalnik preveri odgovor ter dovoli ali zavrne zahtevo.

Razumevanje delovanja CORS je za spletne razvijalce ključnega pomena. Nepravilno konfigurirani CORS nastavitve lahko vodijo do varnostnih tveganj v spletnih aplikacijah. Zato je nujno vedeti, kako CORS deluje in kako ga pravilno nastaviti, da lahko razvijamo varne in učinkovite spletne aplikacije.

Postopki dovoljevanja dostopa

Postopki dovoljevanja v CORS se uporabljajo za določanje, do katerih virov strežnik dovoljuje dostop. Strežnik lahko s pomočjo glave Access-Control-Allow-Origin dovoli dostop do točno določenih virov ali pa dovoljenje razširi na vse vire z uporabo znaka *. Uporaba znaka * predstavlja varnostno tveganje, zato je potrebna previdnost. V primerih, ko se obdelujejo občutljivi podatki, je dovoljevanje dostopa samo do določenih virov bolj varno.

Napake in rešitve

Napake, povezane s CORS, so običajno posledica neustrezno konfiguriranih nastavitev strežnika. Najbolj pogosta napaka je, da glava Access-Control-Allow-Origin manjka ali je napačno konfigurirana. V tem primeru brskalnik blokira zahtevo in prikaže napako CORS. Za odpravo tovrstnih napak je pomembno preveriti nastavitve strežnika in zagotoviti, da je glava Access-Control-Allow-Origin pravilno nastavljena. Prav tako je treba poskrbeti, da so zahteve tipa OPTIONS, znane kot predhodne zahteve (preflight request), pravilno obdelane.

Razumevanje in odpravljanje napak CORS

Napake Cross-Origin Resource Sharing (CORS) so ena najpogostejših težav, s katerimi se soočajo spletni razvijalci, ter morajo za njihovo rešitev pogosto porabiti veliko časa. Te napake nastanejo, kadar spletna stran poskuša zahtevati vir z drugega vira (domena, protokol ali vrata), brskalnik pa to zahtevo iz varnostnih razlogov blokira. Razumevanje in odpravljanje napak CORS je ključnega pomena za nemoteno delovanje sodobnih spletnih aplikacij.

Prvi korak pri diagnosticiranju napak CORS je določiti izvor težave. Analiza sporočil o napakah v orodjih za razvijalce brskalnika (običajno v zavihku Console) vam pomaga razumeti, kateri vir je blokiran in zakaj. Sporočila o napakah pogosto vsebujejo namige za rešitev. Na primer, sporočilo No ‘Access-Control-Allow-Origin’ header is present on the requested resource kaže, da na strani strežnika manjka CORS glava.

Razumevanje in odpravljanje napak CORS
Koda napake Opis Možne rešitve
403 Forbidden Strežnik je zahtevo razumel, vendar jo je zavrnil. Preverite CORS konfiguracijo na strani strežnika. Pravilno nastavite dovoljene vire.
500 Internal Server Error Prišlo je do nepričakovane napake na strežniku. Preverite strežniške dnevnike in poiščite izvor napake. Težava je lahko povezana s CORS konfiguracijo.
CORS napaka (Brskalniška konzola) Brskalnik je zahtevo blokiral, ker je bila kršena CORS politika. Na strani strežnika pravilno nastavite glavo ‘Access-Control-Allow-Origin’.
ERR_CORS_REQUEST_NOT_HTTP CORS zahteva ni izvedena prek protokola HTTP ali HTTPS. Prepričajte se, da je zahteva izvedena prek pravilnega protokola.

Za odpravljanje napak CORS obstajajo različne metode. Najpogostejša je dodajanje ustreznih CORS glave na strani strežnika. Glava ‘Access-Control-Allow-Origin’ določa, katerim virom je dovoljen dostop do strežnika. Če je ta glava nastavljena na ‘*’, to pomeni dovoljenje za vse vire, vendar zaradi varnosti ta pristop običajno ni priporočljiv. Namesto tega je bolj varno, če dovoljenje omejite le na določene vire. Na primer, ‘Access-Control-Allow-Origin: https://example.com’ dovoljuje zahteve samo z naslova ‘https://example.com’.

Za preprečevanje in odpravljanje napak CORS so pomembne še nekatere druge točke:

    Vrste napak

  • Manjkajoča ali nepravilno nastavljena glava ‘Access-Control-Allow-Origin’: Na strani strežnika niso pravilno nastavljene zahtevane glave.
  • Težave s predhodnimi zahtevami (preflight): Strežnik zahteve ‘OPTIONS’ ne obravnava pravilno.
  • Težave s poverilnicami (credentials): Piškotki ali podatki za avtentikacijo se ne pošljejo pravilno.
  • Težave z usmerjanjem med viri: Preusmeritve niso v skladu s CORS politiko.
  • Težave s proxy strežniki: Proxy strežniki ne posredujejo CORS glave pravilno.
  • Obveznost uporabe protokola HTTPS: Zahteve, poslano prek nezaščitenih povezav HTTP, se blokirajo.

Poleg sprememb na strani strežnika lahko za reševanje napak CORS opravite tudi nekaj nastavitev na klientovi strani. Na primer, mogoče je uporabiti proxy strežnik za usmerjanje zahtev ali uporabiti alternativne metode izmenjave podatkov, kot je JSONP. Vendar je treba upoštevati, da lahko te metode predstavljajo varnostna tveganja. Zato je najboljša rešitev običajno zagotoviti pravilno CORS konfiguracijo na strani strežnika.

Najboljše prakse za CORS

Najboljše prakse za CORS

Pravilna konfiguracija Cross-Origin Resource deljenja (CORS) je ključna za ohranjanje varnosti in funkcionalnosti vaših spletnih aplikacij. Napačno nastavljena CORS politika lahko povzroči varnostne ranljivosti in omogoči nepooblaščen dostop. Zato je pomembno, da pri implementaciji CORS ravnate previdno ter sledite najboljšim praksam.

Najboljše prakse za CORS
Najboljša praksa Opis Pomen
Omejite dovoljene izvore (origin) V glavi Access-Control-Allow-Origin navedite le zaupanja vredne domene. Izogibajte se uporabi *. Izboljša varnost in preprečuje nepooblaščen dostop.
Uporabite poverilnice, ko je potrebno Za pošiljanje poverilnic, kot so piškotki ali avtentikacijski headerji, uporabite Access-Control-Allow-Credentials: true. Omogoča dostop do virov, ki zahtevajo avtentikacijo.
Preflight zahteve pravilno upravljajte Zahtevke OPTIONS obdelajte pravilno in zagotovite zahtevane headerje (Access-Control-Allow-Methods, Access-Control-Allow-Headers). Omogoča varno izvajanje kompleksnih zahtev (npr. PUT, DELETE).
Skrbno upravljajte sporočila o napakah Napake CORS uporabnikom jasno sporočite in se izognite razkrivanju morebitnih varnostnih ranljivosti. Izboljša uporabniško izkušnjo in zmanjša varnostna tveganja.

Za večjo varnost se izogibajte uporabi generičnega znaka (*) v glavi Access-Control-Allow-Origin. To omogoča, da ima katera koli domena dostop do vaših virov, kar lahko potencialno vodi do kraje ali manipulacije podatkov s strani škodljivih spletnih mest. Namesto tega naštejte samo domene, ki jim zaupate in želite dovoliti dostop.

    Koraki implementacije

  1. Določite svoje potrebe: Jasno opredelite, katere domene morajo imeti dostop do vaših virov.
  2. Konfigurirajte glavo Access-Control-Allow-Origin: Na strežniški strani navedite samo dovoljene domene.
  3. Upravljajte poverilnice: Če so potrebni piškotki ali avtentikacijski headerji, glavo Access-Control-Allow-Credentials nastavite pravilno.
  4. Obdelajte preflight zahteve: Ustrezno odgovarjajte na OPTIONS zahtevke.
  5. Vzpostavite mehanizem za obdelavo napak: Napake CORS uporabnikom razložite na jasen način.
  6. Testirajte in spremljajte: Svojo CORS konfiguracijo redno testirajte in spremljajte morebitne varnostne ranljivosti.

Poleg tega je pomembno tudi, da preflight zahtevke pravilno upravljate. Brskalniki pošljejo strežniku OPTIONS zahtevo, preden izvedejo nekatere kompleksne zahteve (npr. PUT ali DELETE). Vaš strežnik mora pravilno odgovoriti in vključiti zahtevane glave Access-Control-Allow-Methods in Access-Control-Allow-Headers. To omogoča brskalniku, da izvede dejansko zahtevo.

Pomembno je, da svojo CORS konfiguracijo redno testirate in spremljate. Preizkusite različne scenarije, da odkrijete nepričakovano vedenje ali potencialne varnostne ranljivosti. Spremljajte tudi strežniške loge za zaznavanje poskusov nepooblaščenega dostopa. Ne pozabite, da je ustvarjanje varne spletne aplikacije stalen proces, ki zahteva redno posodabljanje in izboljševanje. Z vzpostavitvijo Cross-Origin Resource deljenja po najboljših praksah lahko bistveno izboljšate varnost svojih spletnih aplikacij.

Na kaj biti pozoren pri uporabi CORS

Pri uporabi Cross-Origin Resource Sharing (CORS) obstaja veliko pomembnih točk, na katere morate biti pozorni, da zagotovite varnost in pravilno delovanje vaše aplikacije. CORS je mehanizem, ki spletnim aplikacijam omogoča izmenjavo podatkov iz različnih virov, vendar lahko ob nepravilni konfiguraciji povzroči resne varnostne ranljivosti. Zato je nujno, da politike CORS skrbno nastavite in sledite določenim korakom za preprečevanje morebitnih težav.

Napake pri konfiguraciji CORS lahko omogočijo nepooblaščen dostop do občutljivih podatkov ali izvedbo zlonamernih napadov. Na primer, nepravilna nastavitev glave Access-Control-Allow-Origin lahko dovoljuje zahteve iz vseh virov. To predstavlja resno varnostno tveganje, kadar je treba dovoliti le zahteve iz določenih virov. Spodnja tabela povzema pogoste napake pri konfiguraciji CORS in njihove potencialne posledice.

Na kaj biti pozoren pri uporabi CORS
Napaka Opis Posledica
Uporaba Access-Control-Allow-Origin: * Dovoljevanje zahtev iz vseh virov. Varnostna ranljivost, možnost dostopa podatkov s strani zlonamernih spletnih strani.
Uporaba Access-Control-Allow-Credentials: true skupaj z Access-Control-Allow-Origin: * Dovoljevanje pošiljanja poverilnic vsem virom (brskalniki to blokirajo). Nepričakovano delovanje, napačna avtentikacija.
Dovoljevanje napačnih HTTP metod Namesto dovoljevanja le določenih metod, kot sta GET ali POST, so dovoljene vse metode. Potencialne varnostne ranljivosti, manipulacija podatkov.
Sprejemanje nepotrebnih glave Namesto sprejemanja le potrebnih glave, so sprejete vse. Varnostne ranljivosti, nepotreben prenos podatkov.

Pomembna točka, na katero morate biti pozorni pri uporabi CORS, je tudi pravilna konfiguracija mehanizma predhodne zahteve (preflight request). Predhodne zahteve so OPTIONS zahteve, ki jih brskalniki pošljejo strežniku pred dejansko zahtevo, da preverijo CORS politike strežnika. Če strežnik nanje ne odgovori pravilno, je dejanska zahteva blokirana. Zato morate poskrbeti, da vaš strežnik ustrezno odgovarja na OPTIONS zahteve.

Ključne točke za varno uporabo

  • Glavo Access-Control-Allow-Origin nastavite pravilno. Dovolite dostop le zaupanja vrednim virom.
  • Bodite previdni pri uporabi glave Access-Control-Allow-Credentials. Če ni nujno potrebna, je ne uporabljajte.
  • Mehanizem predhodnih zahtev (preflight request) pravilno konfigurirajte. Podajte ustrezne odgovore na OPTIONS zahteve.
  • Dovolite le potrebne HTTP metode in glave. Nepotrebne blokirajte.
  • Redno posodabljajte svojo CORS konfiguracijo in jo testirajte glede varnostnih ranljivosti.
  • Za odkrivanje in odpravljanje napak CORS uporabljajte orodja za odpravljanje napak.

Za odpravljanje napak CORS je uporaba orodij za razvijalce v brskalniku zelo koristna. Ta orodja prikazujejo napake in opozorila, povezana s CORS, kar vam pomaga določiti vir težave. Poleg tega lahko preverite strežniške dnevniške zapise (log) in s tem ugotovite, ali so vaše CORS politike pravilno izvajane. Ne pozabite, pravilno konfigurirana CORS politika je pomemben del varnosti vaše spletne aplikacije ter izboljšuje uporabniško izkušnjo.

Pogosto zastavljena vprašanja

Zakaj je CORS pomemben in kako vpliva na proces spletnega razvoja?

CORS povečuje varnost spletnih strani tako, da preprečuje dostop zlonamernih virov do občutljivih podatkov. S tem pomaga ohraniti integriteto uporabniških informacij in aplikacije. V procesu spletnega razvoja omogoča nadzorovano deljenje virov med različnimi domenami ter zagotavlja varno in stabilno uporabniško izkušnjo. Razumevanje tega mehanizma je ključno za razvijalce, da zaprejo morebitne varnostne pomanjkljivosti in tekoče razvijajo aplikacije.

Kako brskalniki izvajajo CORS politike in katere HTTP glave se uporabljajo v tem procesu?

Brskalniki samodejno izvajajo CORS preverjanje, ko spletna stran zahteva vir z druge domene. V tem procesu brskalnik pošlje strežniku glavo 'Origin'. Strežnik nato odgovori z glavo 'Access-Control-Allow-Origin'. Brskalnik primerja vrednosti teh glav in določi, ali je zahteva varna. Poleg tega se za določanje dovoljenih metod, glav in poverilnic uporabljajo še glave kot so 'Access-Control-Allow-Methods', 'Access-Control-Allow-Headers' in 'Access-Control-Allow-Credentials'. Pravilna konfiguracija teh glav je ključnega pomena za preprečevanje CORS težav.

Kateri so najpogostejši vzroki CORS napak in kako jih lahko odkrijem?

Najpogostejši vzroki za CORS napake so nepravilna konfiguracija glave 'Access-Control-Allow-Origin' na strežniku, zahteve iz različnih portov ali protokolov, napake pri predhodnih poizvedbah (preflight request) ter napačna obravnava poverilnic (credentials). Te napake lahko odkrijete z uporabo orodij za razvijalce v brskalniku (Developer Tools). Prikazana sporočila o napakah v konzoli pogosto natančno navedejo izvor CORS problemov. Prav tako lahko v zavihku Network preverite HTTP glave in pregledate strežniške odgovore, povezane s CORS.

Kaj je 'Preflight request' (predhodna zahteva) in kdaj se sproži?

'Preflight request' je OPTIONS zahteva, ki jo brskalnik pošlje strežniku, da pred glavno zahtevo preveri, katere HTTP metode in glave se bodo uporabile. Ta zahteva se sproži zlasti, ko se uporabljajo HTTP metode, ki niso GET ali POST (na primer PUT, DELETE itd.), ali ko so dodane posebne glave. Strežnik mora na tak 'preflight request' pravilno odgovoriti s CORS konfiguracijo, sicer bo glavna zahteva blokirana.

Ali je mogoče onemogočiti ali obiti CORS in kakšna so morebitna tveganja?

CORS je mehanizem varnosti, ki ga uporablja brskalnik. S konfiguracijo CORS glav na strežniški strani nadzorujete, kateri viri imajo dovoljen dostop. Povsem onemogočiti CORS običajno ni priporočljivo, saj takšna nastavitev lahko izpostavi vašo spletno stran številnim varnostnim ranljivostim. Pri razvoju ali določenih testnih scenarijih pa je mogoče CORS začasno obiti z brskalniškimi dodatki ali proxy strežniki. Pomembno je, da teh začasnih rešitev ne uporabljate v produkcijskem okolju.

Kakšne varnostne pomanjkljivosti so povezane s CORS in katere ukrepe moramo sprejeti za njihovo preprečevanje?

Najpogostejše CORS varnostne pomanjkljivosti so nastavitev glave 'Access-Control-Allow-Origin' na '*', s čimer dovoljujete dostop vsem, ter dopuščanje dostopa do poverilnic zlonamernim spletnim mestom. Za preprečitev teh ranljivosti morate glavo 'Access-Control-Allow-Origin' omejiti zgolj na dovoljene domene, glavo 'Access-Control-Allow-Credentials' uporabljati previdno in na strežniški strani dodati dodatne varnostne ukrepe (npr. zaščita pred CSRF).

Kateri pristopi so na voljo za konfiguracijo CORS na strežniku in kako izbrati najprimernejšega?

Za konfiguracijo CORS na strežniški strani obstaja več pristopov; med glavnimi so ročno nastavljanje HTTP glav, uporaba CORS middleware ali konfiguracija spletnega strežnika (npr. Nginx ali Apache). Najprimernejši pristop je odvisen od vaših aplikacijskih potreb, uporabljenih tehnologij in strežniške infrastrukture. Uporaba middleware običajno omogoča bolj prilagodljivo in obvladljivo rešitev, medtem ko je za preproste aplikacije dovolj ročno nastavljanje glav.

Kako naj upravljam CORS nastavitve v različnih okoljih (razvoj, testiranje, produkcija)?

Za upravljanje CORS nastavitev v različnih okoljih lahko uporabite okoljske spremenljivke ali konfiguracijske datoteke. V razvojnem okolju lahko uporabite bolj ohlapne nastavitve (npr. 'Access-Control-Allow-Origin: *'), da zmanjšate CORS napake, vendar te nastavitve v produkciji nikakor niso zaželene. V testnem okolju naj nastavitev CORS posnema strožje produkcijske zahteve, v produkciji pa mora biti glava 'Access-Control-Allow-Origin' omejena zgolj na dovoljene domene, da zagotovite največjo varnost. To lahko dosežete z ločenimi konfiguracijskimi datotekami za vsako okolje ali uporabo okoljskih spremenljivk.

Delite to objavo:

Ekipa Hostragons

Aktualni vodniki naše strokovne ekipe o gostovanju, strežnikih in domenskih imenih. Skupaj poiščimo pravo rešitev za vaš projekt.

Kontaktirajte nas