Cuma, Aralık 6, 2024

PHP ile Cross-Origin Etkinleştirme

yüksek çözünürlüklü php logosu

CDN yada uzak dizinden dosya kullandıran sitelerdeki en büyük sorun tarayıcıların uzak dizin hatası vermesidir. CDN tarafında tuttuğunuz dosyaları kullanıcılara bu hata yüzünden gösterilmez tarayıcı güvensiz gibi görüp kaynağa ulaşmaz bunu çözmek için ise ya Nginx kurallarına ekleme yapmanız gerekir.

Çoğu zaman bu ekleme bile yeterli gelmez yada çalışmaz header bilgisine tanımladığınız uzak dizin kullanımı tanımı geçmez bu gibi durumlarda PHP kullanarak istenilen domain adreslerinden uzak dizini kabul ettirebiliriz.

<?php
/**
 * Created by PhpStorm.
 * User: mertcan
 * Date: 28.11.2015
 * Time: 22:38
 */

// allowed origins
$allowedOrigins = array(
    '(http(s)://)?(www\.)?my\-domain\.com',
    '(http(s)://)?(www\.)?my\-domain\.com',
    '(http(s)://)?(www\.)?my\-domain\.com'
);

if (isset($_SERVER['HTTP_ORIGIN']) && $_SERVER['HTTP_ORIGIN'] != '') {
    foreach ($allowedOrigins as $allowedOrigin) {
        if (preg_match('#' . $allowedOrigin . '#', $_SERVER['HTTP_ORIGIN'])) {
            header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
            header('Access-Control-Allow-Methods: GET, PUT, POST, OPTIONS, DELETE');
            header('Access-Control-Max-Age: 1728000');
            header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');
            break;
        }
    }
}

PHP sayesinde header bilgisine belirttiğiniz originsleri ekleyebilirsiniz birden çok domain tanımlaması yapabilirsiniz. Kullanıcılarınız içeriklerinizi sıkıntısız bir şekilde görebilirler