Работя върху уебсайт и имам проблем точно тук. На страницата, която работя, потребителят поставя ip адрес и портовете, които иска да бъдат търсени. Това се прави с ajax (от страна на потребителя) и php (от страна на сървъра). Ajax изпраща ip и порта (един по един) към php файла и той връща резултата от порта. Целта е потребителят да види кой порт се тества (в елемент div) в момента и тук е проблемът. Той работи/работи добре, тества всички портове, които потребителят иска, но по време на тестовия период не показва порт, показва само крайния порт (след като всички предишни портове са тествани) и резултата от портовете (ако има порт имаше резултат), който се появява в отделен div елемент. Това просто работи перфектно във Firefox, в други браузъри се случва това, което току-що обясних. Конзолата на Google Chrome казва: Отказано задаване на опасна заглавка „Content-length“ и Отказано задаване на опасна заглавка „Връзка“. Търсих този проблем от дни и намерих толкова много неща и ги опитах, но нито едно от тях не реши проблема.
Ето моят код.
jquery.js
function HttpRequest(endereco, portainicio)
{
var xmlhttp;
var params = "endereco="+endereco+"&"+"porta="+portainicio;
if (window.XMLHttpRequest) // IE7+, Firefox, Chrome, Opera, Safari
{
xmlhttp = new XMLHttpRequest();
}
else // IE6, IE5
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("POST", "/firewall/ajax", false);
//alert(params);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send(params);
return xmlhttp.responseText;
}
function ajaxfirewall()
{
(...)
var resposta;
$("p.ip").append("<span class='end'> "+endereco+"</span>");
for (portainicio; portainicio <= portafinal; portainicio++)
{
resposta = HttpRequest(endereco, portainicio);
$("p.porta").append(" <span class='tporta'>"+ resposta+"</span><br>");
}
return false;
}
Друго нещо е наистина странно. Виждате ли онези alert(params);
, които са коментирани във функцията HttpRequest
? Ако го оставя без коментар, той показва порта, който се тества, но показва предупреждението и аз не искам това.