2016-03-31 16 views
0

Biraz tuhaf biri! Üçüncü tarafın barındırdığı sitemize SVG kodunu içe aktarmaya çalışıyorum, XML sunucusundan kendi sunucumuzdan gelen bir PHP betiğinden. Bu nedenle, tüm çağrılar aynı dosyaya gider ancak SVG'yi yüklemek için farklı bir sorgu parametresi kullanır. aramaların bir alt kümesine Yani, neredeyse rastgele, bazen bu alıyorumjQuery.get() Sadece bazı kaynaklarda erişim-denetim-izin-kök hatası hatası

...

No 'Access-Control-Allow-Origin' header is present on the requested resource. 

... (bazen birkaç ama bazen hiçbiri, nadiren hepsi). Sayfa yenilemeleri arasında bile. Bu yüzden sadece neden sadece iş yapmama ya da işe yaramadığını merak ediyorum.

header('Access-Control-Allow-Origin: *'); 

$svg = $_GET['svg']; 
$file = "/path/to/images/social/$svg"; 

if(file_exists($file)){ 
    $svg = file_get_contents($file); 
    $svg = preg_match('/(<svg.*<\/svg>)/is',$svg,$matches); 
    echo $matches[0]; 
} else { 
    echo "0"; 
} 

Ve JS:

İşte PHP dosyasından kod

$('.footer-social a').each(function(){ 
    var el = $(this); 
    var f = '//js.example.com/svg.php?svg='+$.trim(el.attr("class"))+'.svg'; 
    $.get(f, function (data) { 
    if(data!="0"){ 
     el.html(data); 
    } else { 
     console.log(f + " not found"); 
    } 
    }); 

}); 
+1

Chrome'da İzin Verme İzin Verme [CORS] eklentisini yüklemeyi deneyin ve – Nofi

+0

'Header' çağrısından önce başka bir kod var mı? Başlıkların zaten headers_sent() 'kullanılarak gönderilip gönderilmediğini kontrol edebilirsiniz. – jeroen

+0

@jeroen bu bütün dosya! –

cevap

0

tüm sıralanmış - bu biraz fazla sert olma mod_evasive kaynaklandığını ortaya çıkıyor. Şimdi yapılandırma dosyasındaki değişkenleri optimize ettik ve iyi çalışıyor.

Ayrıca, bu durum karşısında herhangi bir kimse varsa OpenCart ve AJAX çıkışıyla ilgili bir sorunla karşılaştık.