[英]Sending HTTPOnly cookie in response using Rails API application
如果我錯了,請糾正我,但 cookie 只是特殊的Set-Cookie:
標題,對嗎? 也許我錯過了一些東西,但對我來說似乎總是如此。 如果我設置了一個 Rails API 應用程序並希望支持發送 HTTPOnly cookie(例如,標頭也假設我有 CORS 以及客戶端設置等上的所有內容),我應該能夠正確地做到這一點嗎?
基本上,我的問題是這些:
ActionDispatch::Cookies
帶回我的中間件並在我的應用程序控制器中添加include ::ActionController::Cookies
完全違背了 API 應用程序的目的?所以我不需要添加任何中間件或包含任何 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.