使用jquery手动设置cookie

时间:2016-01-29 00:27:15

标签: jquery ajax http post cookies

我使用jquery的ajax方法将POST命令发送到另一台服务器。我在我的firefox中设置了CorsE插件,我可以发送POST命令,并且它成功返回。但是,我尝试使用用户和密码登录,并且一切正常,除了我使用ajax方法发送的cookie值不是浏览器设置使用的cookie值。

其中一个参数是" headers",我用我想要的值设置cookie,即" valueA = bla; valueB = bla2",但是当我从inspect元素检查网络选项卡时,我看到firefox用另一个cookie发送POST,即" valueA = tal; VALUEB = TAL2" (我把它们搞定了。)

如何强制firefox使用我最初设置的值?

我的ajax电话是:

$.ajax({
        url: url,
        type: "POST",
        data: {
            "email": email,
            "pass": pass
        },
        headers: {
            "Host": "www.someexample.com",
            "User-Agent": "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0",
            "Accept-Language": "pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3",
            "DNT": "1",
            "Connection": "keep-alive",
            "Content-Length": 47,
            "Accept": "application/json, text/javascript, */*; q=0.01",
            "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
            "X-Requested-With": "XMLHttpRequest",
            "User-Agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36",
            "Content-Type": "application/x-www-form-urlencoded",
            "Referer": url,
            "Accept-Encoding": "gzip, deflate",
            "Accept-Language": "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4",
            "Cookie": "PHPSESSID=abcdefgh; SERVERID=ookkuu;"
        },
        xhrFields: {
            withCredentials: true
        },
        success: function (data) {
            console.log(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            console.log("Status: " + textStatus);
            console.log("Error: " + errorThrown);
        }

发送后,PHPSESSID和SERVERID的值与先前设置的值不同。我想强制firefox发送相同的值。

1 个答案:

答案 0 :(得分:1)

它将始终发送document.cookies中的Cookie。如果要覆盖它们,请更改该变量,而不是尝试使用自定义标头。如果您希望它仅用于那一个调用,请保存旧值,分配所需的新cookie,发送AJAX请求,然后恢复旧值。