我正在网站上工作,我在这里遇到了问题。在我正在工作的页面上,用户输入一个IP地址和他想要搜索的端口。这是用ajax(用户端)和php(服务器端)进行的。 Ajax将ip和port(逐个)发送到php文件,然后返回端口的结果。目标是用户目前正在查看正在测试的端口(在div元素中),这就是问题所在。他运行/运行良好,他测试用户想要的所有端口,但在测试期间他没有显示任何端口,只显示最终端口(在所有先前端口已经过测试之后)和端口的结果(如果某些端口)有一个结果)出现在一个独特的div元素。这在Firefox中完美运行,在其他浏览器中发生了我刚刚解释的内容。谷歌Chrome控制台说:拒绝设置不安全的标题“内容长度”并拒绝设置不安全的标题“连接”。几天来我一直在寻找这个问题,我发现了很多东西,我尝试过,但没有一个能解决问题。
这是我的代码。
的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
个?如果我将其取消注释,它会显示正在测试的端口,但它会显示警报,我不希望这样。
答案 0 :(得分:1)
如果没有HTML你的jquery.js
应该工作,这涉及一些猜测(也许你可以发布相关的摘录(提示,提示))。我认为有可能无法找到$("p.porta")
或者附加的HTML以意想不到的方式做出反应。您应该尝试使用例如将结果打印到控制台console.log
(即你正在使用Firebug或其他类似的东西),以便了解你在什么时间得到的东西。也许你会在客户端找到一些东西。
<强>更新强> 从this question及其接受的答案判断,Chrome行为实际上是您应该期待的。 standard for XMLHttpRequests规定客户端不应设置这两个标头,以避免请求走私攻击。你不应该设置它们(即使你的PHP源代码告诉你)。