Arama Yap Mesaj Gönder
Biz Sizi Arayalım
+90
X
X
X
X

Bize Ulaşın

Konum Halkalı merkez mahallesi fatih cd ozgur apt no 46 , Küçükçekmece , İstanbul , 34303 , TR
HTTP Header ve API Güvenliği

CORS Policy Hatası `.htaccess` ile Nasıl Çözülür?

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.

CORS PolicyAllow-OriginOPTIONSCredentialsmod_headers
Apache / LiteSpeed Diagnostics
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 origin
01Dosyayı ve document root’u doğrulayın
02Yedek alıp hata logunu okuyun
03Sunucu ve uygulama bağlamını ayırın
04curl ile canlı sonucu doğrulayın
01
Güvenli teknik yaklaşım

.htaccess CORS Hatası nasıl analiz edilir?

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.

01

Sunucu türünü belirleyin

Apache, LiteSpeed, Plesk proxy veya NGINX-only yapıyı ayırmadan `.htaccess` sonucu beklemeyin.

02

Yedek ve log alın

Mevcut dosyayı tarihli yedekleyin; Apache/LiteSpeed hata kaydındaki directive ve satırı bulun.

03

Tek kural değiştirin

Redirect, rewrite, header ve erişim kurallarını aynı anda topluca değiştirmeyin.

04

Dışarıdan test edin

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.

02
Canlı sorun sözlüğü

Apache, yönlendirme ve erişim mesajları

01kritik

No Access-Control-Allow-Origin header

Anlamı: Cevap istek originine izin header’ı içermiyor.

Muhtemel neden: mod_headers yok veya kural eşleşmiyor.

02kritik

Credentials with wildcard origin

Anlamı: Cookie/Authorization isteğinde wildcard kullanılmış.

Muhtemel neden: `*` ve credentials birlikte.

03uyari

OPTIONS 301/302 dönüyor

Anlamı: Preflight başka URL’ye yönlendiriliyor.

Muhtemel neden: HTTPS, www veya auth redirect.

04uyari

OPTIONS 401/403

Anlamı: Kimlik doğrulama preflight’ı engelliyor.

Muhtemel neden: Auth middleware veya Basic Auth.

05uyari

Requested header not allowed

Anlamı: Access-Control-Allow-Headers listesi eksik.

Muhtemel neden: Authorization veya özel header.

06uyari

Method not allowed

Anlamı: İstek methodu izin listesinde yok.

Muhtemel neden: PUT/PATCH/DELETE eksik.

07uyari

Duplicate allow-origin headers

Anlamı: Apache, PHP ve CDN aynı header’ı ekliyor.

Muhtemel neden: Birden fazla yönetim noktası.

08bilgi

Font blocked by CORS

Anlamı: CDN/domain üzerindeki font cevabı origin izni vermiyor.

Muhtemel neden: Webfont cross-origin.

Bu ifadeyle eşleşen kayıt bulunamadı.

03
Kopyalanabilir kontroller

curl, Apache log ve dosya testleri

Basit Origin testi

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.

Preflight testi

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.

mod_headers kontrolü

apachectl -M 2>/dev/null | grep headers

Apache headers modülünün yüklü olup olmadığını gösterir.

Header kaynakları

grep -RniE 'Access-Control-Allow|Header (always )?set|header\(' . /etc/apache2 /etc/httpd 2>/dev/null | head -n 120

Apache ve PHP tarafındaki CORS tanımlarını bulur.

Yönlendirme testi

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.

Font CORS testi

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.

04
Doğru ve hatalı yapı

.htaccess kural karşılaştırmaları

Wildcard ve credentials

Riskli / Hatalı
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Credentials "true"
Doğru Yaklaşım
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"

Sabit güvenilir origin

Riskli / Hatalı
Header set Access-Control-Allow-Origin "%{HTTP_ORIGIN}e"
Doğru Yaklaşım
Header always set Access-Control-Allow-Origin "https://app.example.com"
Header always merge Vary "Origin"

Method ve header

Riskli / Hatalı
Header set Access-Control-Allow-Methods "*"
Doğru Yaklaşım
Header always set Access-Control-Allow-Methods "GET, POST, OPTIONS"
Header always set Access-Control-Allow-Headers "Content-Type, Authorization"

Çift yönetim

Riskli / Hatalı
Header always set Access-Control-Allow-Origin "*"
<?php header('Access-Control-Allow-Origin: https://app.example.com'); ?>
Doğru Yaklaşım
CORS header’larını yalnız Apache veya yalnız uygulama katmanında yönetin.
05
Altyapıya göre uygulama

Apache, cPanel, Plesk, LiteSpeed ve uygulamalar

Apache / LiteSpeed

mod_headers ile sabit veya kontrollü origin allowlist uygulanabilir.

  • Header `always` davranışını hata cevaplarında test edin.
  • Vary: Origin ekleyin.
  • OPTIONS cevabını uygulama endpoint’iyle uyumlu tutun.

PHP / API / WISECP

Dinamik tenant/origin kontrolü uygulama katmanında daha güvenli olabilir.

  • Origin değerini doğrudan yansıtmayın.
  • Allowlist’i config/veritabanından doğrulayın.
  • CSRF ve CORS’un farklı güvenlik kontrolleri olduğunu unutmayın.

CDN / Cloudflare / NGINX

Edge veya proxy header ekleyebilir ve cache originler arasında yanlış cevap paylaşabilir.

  • CDN CORS header’larını kontrol edin.
  • Cache key veya Vary: Origin kullanın.
  • NGINX-only sistemde add_header yapılandırması gerekir.
Yanlış müdahaleler

Kesinlikle yapmayın

  • Credentials kullanılan API’de `Access-Control-Allow-Origin: *` kullanmayın.
  • İstekten gelen Origin değerini doğrulamadan response’a yansıtmayın.
  • CORS sorununu tarayıcı güvenliğini kapatan eklentilerle çözülmüş saymayın.
  • CORS ile kimlik doğrulama ve CSRF korumasını birbirinin yerine kullanmayın.
İşlem sonrası kontrol

Çözümü doğrulayın

  • Basit ve preflight istekleri doğru status/header dönüyor.
  • Yalnız izin verilen originler cevap header’ı alıyor.
  • Credentials, method ve requested headers uyumlu.
  • CDN/cache farklı originlere yanlış CORS cevabı vermiyor.
06
İç SEO içerik kümesi

İlgili .htaccess çözümleri

07
Birincil kaynaklar

Apache, WordPress ve panel belgeleri

08
Sık sorulan sorular

.htaccess CORS Hatası hakkında merak edilenler

.htaccess CORS Hatası kuralı NGINX’te çalışır mı?

Hayır. NGINX `.htaccess` dosyalarını okumaz. Kuralın `server` veya `location` yapılandırmasına çevrilmesi gerekir.

.htaccess değişikliği için Apache restart gerekir mi?

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.

Dosyayı düzenlemeden önce ne yapılmalı?

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 ile Plesk’te dosya nerede bulunur?

cPanel’de çoğunlukla `public_html`, Plesk’te `httpdocs` içindedir; addon domain ve subdomainlerin document root’u farklı olabilir.

LiteSpeed `.htaccess` kurallarını destekler mi?

LiteSpeed Apache uyumluluğu sayesinde kuralların büyük bölümünü destekler; bazı modül ve handler davranışları farklı olabilir.

500 hatasında ilk bakılacak yer neresi?

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.

Bu kodlar doğrudan canlı siteye eklenebilir mi?

Alan adı, document root, proxy, WordPress ve sunucu yapısı doğrulanmadan doğrudan eklenmemelidir. Örnekler uyarlanıp test edilmelidir.

EKA YAZILIM VE BİLİŞİM SİSTEMLERİ

.htaccess ve Apache kurallarını siteyi erişilemez hâle getirmeden düzenleyelim

cPanel, Plesk, LiteSpeed, WordPress, özel PHP ve WISECP yapılarında yönlendirme, rewrite, CORS, erişim ve 500 hatalarını loglarla birlikte inceliyoruz.

Sunucu Desteği AlWhatsApp
Top