CORS, tarayıcının farklı origin isteklerinde sunucunun izin politikasını doğrulamasıdır. `Access-Control-Allow-Origin: *` her sorun için güvenli çözüm değildir; credentials kullanılan isteklerde belirli origin, `Vary: Origin`, izinli method/header ve OPTIONS cevabı birlikte yönetilmelidir.
Blocked by CORS policy
No 'Access-Control-Allow-Origin' header
Response to preflight request doesn't pass access control check
Credential is not supported with wildcard originCORS, tarayıcının farklı origin isteklerinde sunucunun izin politikasını doğrulamasıdır. `Access-Control-Allow-Origin: *` her sorun için güvenli çözüm değildir; credentials kullanılan isteklerde belirli origin, `Vary: Origin`, izinli method/header ve OPTIONS cevabı birlikte yönetilmelidir.
Apache, LiteSpeed, Plesk proxy veya NGINX-only yapıyı ayırmadan `.htaccess` sonucu beklemeyin.
Mevcut dosyayı tarihli yedekleyin; Apache/LiteSpeed hata kaydındaki directive ve satırı bulun.
Redirect, rewrite, header ve erişim kurallarını aynı anda topluca değiştirmeyin.
curl ile status, Location, Content-Type ve redirect sayısını ölçüp cache katmanlarını ayrıca kontrol edin.
Credentials kullanılan API’de `Access-Control-Allow-Origin: *` kullanmayın.
Anlamı: Cevap istek originine izin header’ı içermiyor.
Muhtemel neden: mod_headers yok veya kural eşleşmiyor.
Anlamı: Cookie/Authorization isteğinde wildcard kullanılmış.
Muhtemel neden: `*` ve credentials birlikte.
Anlamı: Preflight başka URL’ye yönlendiriliyor.
Muhtemel neden: HTTPS, www veya auth redirect.
Anlamı: Kimlik doğrulama preflight’ı engelliyor.
Muhtemel neden: Auth middleware veya Basic Auth.
Anlamı: Access-Control-Allow-Headers listesi eksik.
Muhtemel neden: Authorization veya özel header.
Anlamı: İstek methodu izin listesinde yok.
Muhtemel neden: PUT/PATCH/DELETE eksik.
Anlamı: Apache, PHP ve CDN aynı header’ı ekliyor.
Muhtemel neden: Birden fazla yönetim noktası.
Anlamı: CDN/domain üzerindeki font cevabı origin izni vermiyor.
Muhtemel neden: Webfont cross-origin.
Bu ifadeyle eşleşen kayıt bulunamadı.
curl -sSI -H 'Origin: https://app.example.com' https://api.example.com/data | grep -iE '^HTTP|access-control|vary:|location:'CORS response header’larını gösterir.
curl -sS -i -X OPTIONS https://api.example.com/data -H 'Origin: https://app.example.com' -H 'Access-Control-Request-Method: POST' -H 'Access-Control-Request-Headers: Authorization, Content-Type'OPTIONS status ve izin header’larını tam olarak gösterir.
apachectl -M 2>/dev/null | grep headersApache headers modülünün yüklü olup olmadığını gösterir.
grep -RniE 'Access-Control-Allow|Header (always )?set|header\(' . /etc/apache2 /etc/httpd 2>/dev/null | head -n 120Apache ve PHP tarafındaki CORS tanımlarını bulur.
curl -sIL -X OPTIONS https://api.example.com/data -H 'Origin: https://app.example.com' -H 'Access-Control-Request-Method: POST' | grep -iE '^HTTP|^location:|access-control'Preflight isteğinin redirect olup olmadığını gösterir.
curl -sSI -H 'Origin: https://www.example.com' https://cdn.example.com/fonts/site.woff2 | grep -iE '^HTTP|content-type|access-control|vary:'Font dosyasının MIME ve CORS header’larını gösterir.
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Credentials "true"SetEnvIf Origin "^https://app\.example\.com$" CORS_ORIGIN=$0
Header always set Access-Control-Allow-Origin "%{CORS_ORIGIN}e" env=CORS_ORIGIN
Header always set Access-Control-Allow-Credentials "true" env=CORS_ORIGIN
Header always merge Vary "Origin"Header set Access-Control-Allow-Origin "%{HTTP_ORIGIN}e"Header always set Access-Control-Allow-Origin "https://app.example.com"
Header always merge Vary "Origin"Header set Access-Control-Allow-Methods "*"Header always set Access-Control-Allow-Methods "GET, POST, OPTIONS"
Header always set Access-Control-Allow-Headers "Content-Type, Authorization"Header always set Access-Control-Allow-Origin "*"
<?php header('Access-Control-Allow-Origin: https://app.example.com'); ?>CORS header’larını yalnız Apache veya yalnız uygulama katmanında yönetin.mod_headers ile sabit veya kontrollü origin allowlist uygulanabilir.
Dinamik tenant/origin kontrolü uygulama katmanında daha güvenli olabilir.
Edge veya proxy header ekleyebilir ve cache originler arasında yanlış cevap paylaşabilir.
Hayır. NGINX `.htaccess` dosyalarını okumaz. Kuralın `server` veya `location` yapılandırmasına çevrilmesi gerekir.
Genellikle hayır; Apache `.htaccess` dosyasını istek sırasında değerlendirir. Ancak sunucu VirtualHost, modül veya AllowOverride değişikliğinde reload/restart gerekir.
Mevcut dosyanın tarihli yedeği alınmalı, aktif document root doğrulanmalı ve değişiklik staging veya düşük trafikli zamanda test edilmelidir.
cPanel’de çoğunlukla `public_html`, Plesk’te `httpdocs` içindedir; addon domain ve subdomainlerin document root’u farklı olabilir.
LiteSpeed Apache uyumluluğu sayesinde kuralların büyük bölümünü destekler; bazı modül ve handler davranışları farklı olabilir.
Apache/LiteSpeed error log içindeki tam directive ve satır kaydıdır. Dosyayı rastgele silmek yerine loga göre geri alınmalıdır.
Alan adı, document root, proxy, WordPress ve sunucu yapısı doğrulanmadan doğrudan eklenmemelidir. Örnekler uyarlanıp test edilmelidir.
cPanel, Plesk, LiteSpeed, WordPress, özel PHP ve WISECP yapılarında yönlendirme, rewrite, CORS, erişim ve 500 hatalarını loglarla birlikte inceliyoruz.