要求兼容浏览器 Opera9.64+, 不需要ms的js方法, setRequestHeader两次什么的都试过了, 不管事.
已测:
浏览器已有cookie : 'x=y'
测试预设cookie : 'a=1;b2;c=3'xhr.setRequestHeader('Cookie', $cookie)无效
xhr.setRequestHeader('Cookie', [$cookie])无效
xhr.setRequestHeader('Cookie', {$cookie})无效
xhr.setRequestHeader('Cookie', $a);xhr.setRequestHeader('Cookie', $b);xhr.setRequestHeader('Cookie', $c)无效默认带出去的还是页面自己写到浏览器上的cookie(x=y)啊...谁有啥办法可以把自己预设cookie加到post里啊...

解决方案 »

  1.   

    ajax请求里不能自己设定cookie,浏览器会自动带上你的cookie的
      

  2.   

    不关ajax的事...就记事本写的代码...
    是关于javascript和xhr本身的问题...
    注释掉的两行均无效...xhr请求貌似会自动带出页面cookie而且不受setRequestHeader控制,
    现在我只能先用js设置cookie后再进行xhr,,我想寻找一种不需要写cookie就能在请求头加上指定cookie的办法...
    (写cookie的话要写硬盘上的cookie4.dat...这个文件位置是不可变的..所以不停的写这个文件太费硬盘了...= =|")function $xPost(action, data, ua, refer, cookie) {
    if (window.XMLHttpRequest){
    var xhr = new XMLHttpRequest();
    } else if (window.ActiveXObject){
    var xhr = new ActiveXObject('Microsoft.XMLHTTP');
    } else {
    return null;
    }
    if (action=='') action=location.href;
    if (data=='' || data=='undefined') data=null;
    xhr.open('POST', action, true);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    if ( ua!='' && ua!='undefined' && ua!=null ){xhr.setRequestHeader('User-Agent', ua);}
    if ( refer!='' && refer!='undefined' && refer!=null ){xhr.setRequestHeader('Referer', refer);}
    if ( cookie!='' && cookie!='undefined' && cookie!=null ){
    //xhr.setRequestHeader('Cookie', cookie);
    //var cookies=cookie.split(';'); for (var i=0; i<cookies.length; i++){xhr.setRequestHeader('Cookie', cookies[i]);};
    var cookies=cookie.split(';'); for (var i=0; i<cookies.length; i++){document.cookie=cookies[i];};
    }
    xhr.send(data);
    }
      

  3.   

    没错,我说了标准里是不支持用JS在http请求头部直接写cookie的,你的需求没法实现
      

  4.   

    xhr设置不了cookie的,你可以发送前设置cookie就行了,浏览器会自动帮你添加cookie到xhr请求中document.cookie='a=1;';
    document.cookie='c=3';xhr.send(null);
      

  5.   

    多谢两位啊...现在我死心了啊...
    看来要研究下用priv0x..之类的试试能不能重写请求头插入cookie了...