• 09-02-2019, 01:21:37
    #1
    Merhabalar,

    Basit bir GET kodum var. HTML'e data yazdıracağım. Ancak get fonksiyonu garip şekilde aşağıdaki hatayı veriyor. Nasıl çözerim?

    Access to XMLHttpRequest at 'data.json' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

    $.ajax({
            type: 'GET',
            url: 'data.json',
            dataType: 'json',
            success: function (data) {}
    });
    kod bu. Chrome'da eklenti kurarak aşabiliyorum. Ancak başka birisinde yine hata verecektir.
  • 09-02-2019, 01:39:59
    #2
    PHP ile gönderme şansın varsa aşağıdakı kodu sayfa başına yazabilirsin.

    <?php
    if (isset($_SERVER['HTTP_ORIGIN'])) {
        // Decide if the origin in $_SERVER['HTTP_ORIGIN'] is one
        // you want to allow, and if so:
        header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
        header('Access-Control-Allow-Credentials: true');
        header('Access-Control-Max-Age: 86400');    // cache for 1 day
    }
    
    // Access-Control headers are received during OPTIONS requests
    if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    
        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
            header("Access-Control-Allow-Methods: GET, POST, OPTIONS");        
    
        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
            header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
    
        exit(0);
    }
    ?>
    yada

    json dosyasının içindeki verileri callback() içine yazabilirsin. bir araştır istersen.
  • 09-02-2019, 18:25:38
    #3
    yok hocam php değil düz html bi proje

    jsonp ile de deniyorum yine aynı hataya düşüyor
  • 18-02-2019, 09:12:55
    #4
    Aktif olarak jquery kullanmıyorum o yüzden yanlış bilgi olabilir. Kısaca jquery api'sine göz attım. Api'de jquery ajax'ta crossDomain default olarak false geliyor. Yani farklı bir domaine sorgu yaparken bundan dolayı sıkıntı yaşıyor olabilirsiniz.

    "crossDomain: true" yapıp, headers'a da "Access-Control-Allow-Headers: *" eklerseniz sorununuz çözülebilir.