Veb tərtibatçıları arasında geniş yayılmış yanlış anlaşmalardan biri odur ki, CORS (Cross-Origin Resource Sharing) düzgün konfiqurasiya ediləndə kukilərin avtomatik olaraq hər sorğuya əlavə edildiyi düşünülür. Lakin brauzerlər bu qayda ilə işləmir.
Default Davranış: Kukilər Göndərilmir
fetch() və ya XMLHttpRequest ilə çarpaz mənbə sorğusu edildikdə, brauzer heç bir kukini, autorizasiya headerini və ya digər etimadnamə məlumatını avtomatik göndərmir. Məsələn, istifadəçi api.example.com-a daxil olsa belə, fetch('https://api.example.com/profile') sorğusu heç bir kuki daşımır. Bu, autentifikasiya məlumatlarının təsadüfən başqa mənbələrə sızmasının qarşısını almaq üçün qəsdən edilib.
Kukiləri Necə Göndərmək Olar?
Kukilərin çarpaz mənbə sorğusuna əlavə edilməsini təmin etmək üçün credentials: 'include' parametrindən istifadə etmək lazımdır. Ancaq bu, kukilərin mütləq göndəriləcəyi anlamına gəlmir. Bu parametr sadəcə brauzerə deyir: “Bu sorğu ilə göndərilməyə uyğun kukilər varsa, onları əlavə et.” Yəni bu, yalnız ilkin şərtdir.
Kukinin Uyğunluq Şərtləri
- Domain: Kukinin domain atributu ilə sorğunun hədəfi uyğun olmalıdır.
- Path: Sorğu yolu kukinin path atributuna uyğun gəlməlidir.
- SameSite: Kukinin SameSite siyasəti çarpaz sayt sorğularına icazə verməlidir.
Bu şərtlərdən hər hansı biri pozularsa, kuki göndərilmir.
Server Tərəfinin Rolu
Kuki uğurla göndərilsə belə, JavaScript'in cavabı oxuya bilməsi üçün server aşağıdakı headerləri qaytarmalıdır:
- Access-Control-Allow-Credentials: true
- Access-Control-Allow-Origin — dəqiq mənbə (wildcard * istifadə edilə bilməz, çünki etimadnamə ilə birlikdə wildcard Origin'ə icazə verilmir).
Vacib Fərq: Kuki Göndərilib, Cavab Oxunmur
Kukinin göndərilməsi ilə cavabın JavaScript tərəfindən oxunması iki fərqli məsələdir. Aşağıdakı ssenari mümkündür:
- ✅ Brauzer sorğunu göndərir.
- ✅ Kuki sorğuya əlavə olunur.
- ✅ Server kukini qəbul edir və sorğunu işləyir.
- ✅ Server düzgün cavab yaradır.
- ❌ Lakin CORS siyasəti uyğun olmadığı üçün brauzer JavaScript'ə cavabı oxumağa icazə vermir.
Yəni CORS xətası həmişə kukinin göndərilmədiyi anlamına gəlmir. Sadəcə brauzer cavabı JavaScript'ə açmaqdan imtina edir.
Xülasə, çarpaz mənbə sorğusunda kukinin göndərilməsi üçün həm müştəri tərəfində credentials: 'include', həm kukinin öz qaydalarına uyğunluğu, həm də server tərəfində düzgün CORS konfiqurasiyası tələb olunur.

