簡體   English   中英

Cookie不是通過HTTP GET發送的

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

修補程序正常運行,按預期發送cookie

GET請求不包含任何內容。 我丟了404,因為找不到cookie值。

變得不工作,不發送任何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.

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