5.00 / 1 oy

Php'de birden çok domain'e Access-Control-Allow-Origin izni vermek

.htaccess üzerinden yapılacağını tahmin ediyorum ama forumlarda kayboldum. cdn olarak kullandığım bir alt alan adını birden fazla internet sitesi için fotoğraf kaynağı olarak kullanacağım ama tarayıcı hatası olarak CORS (Access-Control-Allow-Origin) hatası çıktığı için bu alan adlarına izin vermeye çalışıyorum. Sadece bir site için değil, birden fazla site için alt alta yazıp bu sitelere CORS izni verilsin demek istiyorum?

RainingCodes

26.07.2019 21:55

Bu soru 1 kez yanıtlandı.

  • 27 Temmuz 2019 23:44
    31

    .htaccess dosyası üzerinden düzenleme yapmak isterseniz aşağıdaki düzenlemeyi .htaccess dosyanıza ekleyebilirsiniz:

    <FilesMatch "\.(jpg|jpeg|png|gif|svg)$">
        <IfModule mod_headers.c>
            SetEnvIf Origin "http(s)?://(www\.)?(siteadi1.com | siteadi12.com)$" AccessControlAllowOrigin=$0
            Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
            Header merge Vary Origin
        </IfModule>
    </FilesMatch>

    Ancak bu kod bloğu sadece görsel dosyalarınıza adresi başından belirtilmiş 2 sitenin erişebilmesini sağlayabilir. Daha doğrusu herkes erişebilir ancak CORS izni ile erişim izni verir diyelim. Eğer tersi bir durum varsa ve farklı cdn'lerden bu sunucuya kurulmuş siteden bir erişim yapmak gerekirse global cdn'lerin adresleri sürekli olarak değiştiği için bu yöntem işe yaramayacaktır. Bu durumda vary header kullanmanız gerekir.

    Alternatif bir çözüm olarak aşağıdaki php kodları ile de istediğiniz sayıda siteye cors izni verebilirsiniz.

    $http_origin = $_SERVER['HTTP_ORIGIN'];
    
    if ($http_origin == "http://www.siteadi1.com" || $http_origin == "http://www.siteadi2.com" || $http_origin == "http://www.siteadi3.com")
    {  
        header("Access-Control-Allow-Origin: $http_origin");
    }

    Elbette http/https ya da farklı subdomain'ler için bu koda da wildcard'lar ekleyebilirsiniz.

Bu soruya sadece kayıtlı kullanıcılar yanıt yazabilirler. Yanıt yazmak için lütfen giriş yapınız.

Reitix
Php'de birden çok domain'e Access-Control-Allow-Origin izni vermek

İnternet sitemizdeki deneyiminizi iyileştirmek için çerezler kullanıyoruz. Bu siteye giriş yaparak çerez kullanımını kabul etmiş sayılıyorsunuz. Daha fazla bilgi.