拒绝设置不安全的标题连接/内容长度

时间:2014-05-19 13:51:19

标签: ajax connection content-length

我正在网站上工作,我在这里遇到了问题。在我正在工作的页面上,用户输入一个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个?如果我将其取消注释,它会显示正在测试的端口,但它会显示警报,我不希望这样。

1 个答案:

答案 0 :(得分:1)

如果没有HTML你的jquery.js应该工作,这涉及一些猜测(也许你可以发布相关的摘录(提示,提示))。我认为有可能无法找到$("p.porta")或者附加的HTML以意想不到的方式做出反应。您应该尝试使用例如将结果打印到控制台console.log(即你正在使用Firebug或其他类似的东西),以便了解你在什么时间得到的东西。也许你会在客户端找到一些东西。

<强>更新this question及其接受的答案判断,Chrome行为实际上是您应该期待的。 standard for XMLHttpRequests规定客户端不应设置这两个标头,以避免请求走私攻击。你不应该设置它们(即使你的PHP源代码告诉你)。