簡體   English   中英

使用 Rails API 應用程序發送 HTTPOnly cookie 作為響應

[英]Sending HTTPOnly cookie in response using Rails API application

如果我錯了,請糾正我,但 cookie 只是特殊的Set-Cookie:標題,對嗎? 也許我錯過了一些東西,但對我來說似乎總是如此。 如果我設置了一個 Rails API 應用程序並希望支持發送 HTTPOnly cookie(例如,標頭也假設我有 CORS 以及客戶端設置等上的所有內容),我應該能夠正確地做到這一點嗎?

基本上,我的問題是這些:

  1. ActionDispatch::Cookies帶回我的中間件並在我的應用程序控制器中添加include ::ActionController::Cookies完全違背了 API 應用程序的目的?
  2. 如果是這樣,我可以手動通過標頭發送 HTTPOnly cookie 嗎?
  3. 如果是這樣,手動管理 cookie 頭是否會更麻煩? 如果我真正需要做的只是發送一個 HTTPOnly 刷新令牌,那么我是否可以通過將 cookie 中間件放在外面來衡量手動處理它們的收益?

所以我不需要添加任何中間件或包含任何 cookie 類。 我可以使用reponse.set_header發送cookie。 但是,這只允許您發送一個Set-Cookie標頭,因為它會覆蓋您使用Set-Cookie作為鍵Set-Cookie的最后一個標頭。 相反,您可以訪問response.set_cookie ,它可以讓您在每個set_cookie調用中設置多個 cookie。 它還帶有一些您可以設置的選項,您必須將這些選項添加到您使用set_header手動發送的標頭的值中。

這是我使用的一個示例,它允許我發送 cookie:

response.set_cookie(
  :jwt,
  {
    value: 'this could be a token or whatever cookie value you wanted.',
    expires: 7.days.from_now,
    path: '/api/v1/auth',
    httponly: true
  }
)

檢查此方法的文檔以獲取其他選項,因為還有其他選項。

編輯:我遇到了一個問題,cookie 在響應中被發送但沒有保存(仍然)。 它沒有出現在 cookie 存儲中,所以我更改了發送到/的 cookie 的路徑,然后它出現了。 我刪除了它,然后將 cookie 的路徑更改為/my/real/path並且它工作並存儲在 cookie 存儲中。 去搞清楚。

暫無
暫無

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

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