[英]Cookies are not sent on HTTP GET
我正在使用僅HTTP(且在生產中安全)的Cookie來維護具有后端API的用戶身份驗證狀態。
但是,我遇到了一個問題,其中未在HTTP GET請求上發送Cookie。 POST和PATCH請求可以正常工作,但是獲取缺少Cookies請求標頭。
作為標准的一部分,我對此一無所知。 Mozilla文檔明確有一個包含GET請求的示例,其中包括Cookies? https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies
作為上下文,我目前正在開發中,因此在“ localhost”上運行並使用Chrome 63.0.3239.132。
編輯 :添加的圖像
因此,在應用程序中設置了cookie
PATCH請求按預期方式發送Cookies
GET請求不包含任何內容。 我丟了404,因為找不到cookie值。
問題出在使用JQuery發出AJAX請求的javascript(實際上是Typescript)代碼。
Cookies被視為憑證,因此XHR請求必須允許withCredentials=true
。
let ajax = this.jQuery.ajax({
type: "GET",
url: getUrl,
headers: this.generateHeaders(),
xhrFields: {
withCredentials: true // this was false.
},
timeout: this.options.RequestTimeoutMs
});
更改withCredentials
字段后,發送了cookie!
附注:上withCredentials
。 您將需要CORS設置來允許此操作,特別是Access-Control-Allow-Credentials:true
,此時您不能使用Access-Control-Allow-Origin:*
(無論如何都不是一個好主意),而必須指定不帶域的域尾隨/'s
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.