AJAX gönderi hatası: Güvenli olmayan "Bağlantı" üstbilgisini ayarlamayı reddetti


101

Verileri bir PHP dosyasına geri gönderen aşağıdaki özel ajax işlevine sahibim. Veri gönderimi her gerçekleştiğinde aşağıdaki iki hatayı alıyorum:

Güvenli olmayan "İçerik uzunluğu"
üstbilgisinin ayarlanması reddedildi Güvenli olmayan "Bağlantı" üstbilgisini ayarlamayı reddetti

Kod:

function passposturl(url1, params, obj)
{
    //url1 = url1+"&sid="+Math.random();
    xmlHttp = get_xmlhttp_obj();
    xmlHttp.loadflag = obj;
    xmlHttp.open("POST", url1, true);
    //alert(url1);
    //alert(params);
    //alert(obj);
    //alert(params.length);
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlHttp.setRequestHeader("Content-length", params.length);
    xmlHttp.setRequestHeader("Connection", "close");
    xmlHttp.onreadystatechange = function ()
    {
        stateChanged(xmlHttp);
    };
    xmlHttp.send(params);
 }

Neyi yanlış yapıyorum?



Hey Joey. Buraya göndermeden önce bunun üzerinden geçtim. Hâlâ anlamıyorum. Tüm yapmam gereken setRequestHeader satırlarını yorumlamak mı?
sniper

Yanıtlar:


166

Şu iki satırı kaldırın:

xmlHttp.setRequestHeader("Content-length", params.length);
xmlHttp.setRequestHeader("Connection", "close");

XMLHttpRequest'in bu üstbilgileri ayarlamasına izin verilmiyor, bunlar tarayıcı tarafından otomatik olarak ayarlanıyor. Bunun nedeni, bu üstbilgileri manipüle ederek sunucuyu aynı bağlantı üzerinden ikinci bir isteği kabul etmesi için kandırabilmenizdir, bu normal güvenlik kontrollerinden geçmez - bu tarayıcıda bir güvenlik açığı olur.


5
Neye "güvenlik açığı" Connection: closeneden olur? Bir isteğin uzun süreceğini biliyorsanız , kalıcı bağlantıyı kapatmamasını talep etmeniz mümkün olmalıdır . Tarayıcılar da istek ardışık düzenini desteklemez, bu nedenle uzun süre çalışan bir istek normal bir istekten önce gelirse, 2. isteği tam canlı tutma süresi için engeller. Uzun süre çalışan istek "Bağlantı: kapat" seçeneğini kullanabiliyorsa, kalıcı bağlantıyı bağlamaması ve (örneğin) gereksiz 5 saniyelik gecikmeye (burada 5 saniye canlı tutma süresidir) neden olması istenebilir.
doug65536

3
@ doug65536: Tarayıcılar başlık değerlerini doğrulamazlar, sadece uğraşmamanız gereken başlıkların ayarlanmasına izin vermezler.
Wladimir Palant

Merhaba Wladimir, Bu 2 satır kaldırılırsa parametremi nasıl geçiririm?
coderInrRain

@anunixercoder: Yapmıyorsun. Bu iki başlık, tarayıcı tarafından otomatik olarak ayarlanır ve değiştirilemez.
Wladimir Palant

Ynt: "Kalıcı bağlantıyı bağlamamasını talep etmek mümkün olmalıdır." - bu değil | Bağlantı: kapat | yapar.
EricLaw
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.