2011-08-26 17 views
73

Verileri bir PHP dosyasına geri gönderen aşağıdaki özel ajax işlevine sahibim. Her şey verilerin sonrası aşağıdaki iki hatalar olsun gerçekleşir:AJAX gönderi hatası: Güvenli olmayan başlığı ayarlama reddetti "Bağlantı"

güvensiz başlık "Content-uzunluk" set reddetti
güvensiz başlığı "Bağlantı"

Kod ayarlamak için Reddedildi:

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?

+2

Bakın: http://stackoverflow.com/questions/2623963/webkit-refused-to-set-unsafe-header-content-length – Joe

+0

Hey Joey. Onu buraya göndermeden önce bunu yaptım. Hala anlamadım. Tek yapmam gereken setRequestHeader satırlarını yorumlamak mı? – sniper

cevap

125

Kaldır şu iki satır:

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

XMLHttpRequest Bu başlıklara ayarlamak için izin verilmez, bunlar tarayıcı tarafından otomatik olarak ayarlanıyor. Bunun nedeni, bu üstbilgilerin işlenmesiyle sunucuyu, aynı bağlantı üzerinden ikinci bir isteği kabul etmeye zorlayabilmenizdir; bu, olağan güvenlik denetimlerinden geçmeyen bir tarayıcı güvenlik açığıdır.

+4

Ne "güvenlik açığı" yok "Bağlantı: kapat" neden? Bir isteğin uzun süreceğini biliyorsanız, kalıcı bağlantıyı kurmasını istememelisiniz *. Tarayıcılar, istekte bulunan boru hattını da desteklemez. Bu nedenle, normal bir istekten önce uzun bir çalışma isteği gelirse, bekletme süresinin tamamı için ikinci isteği engeller. Uzun süren çalışma isteği "Bağlantı: kapat" ı kullanabilseydi, kalıcı bağlantıyı bağlayıp (örneğin) 5 saniyelik bir gecikmenin neden olduğu (örneğin 5 saniyenin canlı kaldığı süreyi) istemesi mümkün olabilirdi. – doug65536

+2

@ doug65536: Tarayıcılar üstbilgi değerlerini doğrulamaz, yalnızca üstesinden gelmemeleri gereken üstbilgileri ayarlamalarına izin vermezler. –

+0

Merhaba Wladimir, Eğer bu 2 satır kaldırılırsa parametrem nasıl geçer? – anunixercoder

İlgili konular