Javascript AJAX post错误:拒绝设置不安全的标题;“连接”;

Javascript AJAX post错误:拒绝设置不安全的标题;“连接”;,javascript,ajax,Javascript,Ajax,我有下面的自定义ajax函数,它将数据发布回PHP文件。每次发布数据时,我都会遇到以下两个错误: 拒绝设置不安全的标题“内容长度” 拒绝设置不安全的标题“连接” 代码: function passposturl(url1, params, obj) { //url1 = url1+"&sid="+Math.random(); xmlHttp = get_xmlhttp_obj(); xmlHttp.loadflag = obj; xmlHttp.open(

我有下面的自定义ajax函数,它将数据发布回PHP文件。每次发布数据时,我都会遇到以下两个错误:

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

代码:

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);
 }

我做错了什么?

删除这两行:

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

XMLHttpRequest不允许设置这些头,它们是由浏览器自动设置的。原因是,通过操纵这些头,您可能会欺骗服务器通过同一个连接接受第二个请求,而该请求不会通过通常的安全检查,这将是浏览器中的一个安全漏洞。

请参阅:嘿,Joey。在我把它贴到这里之前,我确实看过了。我还是不明白。我所要做的就是注释setRequestHeader行。
Connection:close造成了什么“漏洞”?如果您知道一个请求将花费很长时间,那么应该可以请求它不占用持久连接。浏览器也不支持请求管道,因此,如果长时间运行的请求出现在正常请求之前,那么它将在整个保留时间内阻止第二个请求。如果长时间运行的请求可以使用“Connection:close”,则可能会请求它不占用持久连接,并导致(例如)不必要的5秒延迟(其中5秒是保持活动时间)。@doug65536:浏览器不验证标头值,他们只是不允许设置你不应该弄乱的标题。嗨,瓦拉迪米尔,如果删除了这两行,我如何传递我的参数?@anunixercoder:你不允许。这两个标题由浏览器自动设置,不能更改。Re:“应该可以请求它不占用持久连接。”--这不是| connection:close |所做的。