首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么jQuery ajax在我的请求头中多次添加相同的cookie?

为什么jQuery ajax在我的请求头中多次添加相同的cookie?
EN

Stack Overflow用户
提问于 2013-11-11 14:01:13
回答 1查看 1K关注 0票数 0

我已经被困在这里好几个小时了,不知道你能不能帮我个忙,或者给我一些建议?

长话短说,我有一个asp.net web api应用程序,在我的一个页面中,我试图从web api加载一些数据,并将它们添加到几个下拉列表中。无论如何,当页面加载时,我使用jQuery ajax

代码语言:javascript
运行
复制
$(document).ready(function () {
    //Fires when page loads
    LoadMachines();
    LoadMachieGroups();
    LoadPrinterServer();
    LoadSavePreference();
});

例如,每个函数都执行类似的工作

代码语言:javascript
运行
复制
 function LoadMachieGroups() {
        console.log("Before group " + document.cookie);
        $.ajax({
            type: "GET",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            url: "/api/Machine/MachineGroups",
            //data: "{}",
            success: function (response) {
                OnMachinesGroupLoadSuccess(response);
            }
        });

        console.log("after group " + document.cookie);
    }

问题是,我们的代码运行到第三个函数(LoadPrinterServer)和第四个函数(LoadSavePreference)。请求头三次传递具有不同值的相同cookies (DoxMachineId)。(请参见图片),这会导致在我的c#代码中查找正确的结果。

我的问题是: 1.)为什么相同的cookie可以多次添加到头部?这是不是因为多个ajax调用?)如何解决这个问题?例如:删除cookie?

感谢高年级的同学们。

EN

回答 1

Stack Overflow用户

发布于 2016-02-25 22:32:26

由于我偶然遇到了相同(或非常相似)的问题,并且在其他地方找不到解决方案,下面是我在严重挫折后自我发现的解决方案:

当我向客户机发送set-cookie头文件时,我没有在服务器端将其path参数设置为/ (根目录)。客户端将其解释为将cookie的路径设置为其当前目标路径的叶子的父路径。在我的例子中,这意味着/api (因为它一直是对/api/create的ajax调用)。

因此,客户端最终为每个路径存储了一个cookie实例(在我的示例中,对于每个api调用,客户端都存储了一个cookie实例,以及通过加载资源设置的根路径的一个cookie )。

每当客户端稍后向服务器发送请求时,它都会将所有cookie实例(以及它们各自的值)附加到与当前目标路径匹配的请求中(同样,在我的例子中,每当客户端请求/api/create时,它都会附加路径/的cookie实例以及路径/api的实例,这意味着具有两个不同值的相同cookie)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19899828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档