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