簡體   English   中英

為什么jQuery ajax在我的請求標頭中多次添加相同的cookie?

[英]Why jQuery ajax added same cookie in my request header multiple times?

我已經被這個問題困擾了好幾個小時,想知道您是否可以幫助我或提供一些建議?

長話短說,我有一個asp.net Web api應用程序,在我的頁面之一中,我試圖從Web api加載一些數據並將其添加到幾個下拉列表中。 無論如何,我在頁面加載時使用jQuery ajax

$(document).ready(function () {
    //Fires when page loads
    LoadMachines();
    LoadMachieGroups();
    LoadPrinterServer();
    LoadSavePreference();
});

每個功能都完成類似的工作,例如

 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)。 請求標頭將具有不同值的相同cookie(DoxMachineId)傳遞了三次。 (請參閱圖片),這會在我的c#代碼中引起麻煩,以找到正確的結果。

我的問題是:1.)為什么同一Cookie會多次添加到標題中? 這是因為有多個ajax調用嗎? 2)如何解決問題? 例如:刪除cookie?

謝謝先進的家伙。

在此處輸入圖片說明

由於我偶然發現了相同(或非常相似)的問題,並且在其他地方找不到解決方案,因此,我遇到了嚴重挫折之后找到的自我解決方案:

當我將set-cookie標頭發送給客戶端時,我錯過了在服務器端將其path參數設置為/ (根)的情況。 客戶端將其解釋為將cookie的路徑設置為其當前目標路徑的葉的父級。 在我的情況下,這意味着/api (因為它一直是/api/create的ajax調用)。

因此,客戶端最終在每個路徑中存儲了一個cookie實例(在我的情況下,對於每個api調用,在客戶端存儲了一個cookie實例,而對於根路徑則存儲了一個cookie。通過加載資源來設置)。

每當客戶端稍后向服務器發送請求時,它都會將與當前目標路徑匹配的所有cookie實例(及其各自的值)附加到該請求(同樣,在我的情況下,只要客戶端請求/api/create它並附加路徑/的cookie實例以及路徑/api的實例,這意味着具有兩個不同值的同一cookie)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM