[英]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.