Elixir/Phoenix - 访问用户的 cookie:conn.cookies vs conn.req_cookies vs conn.req_headers

Pet*_*r R 8 elixir phoenix-framework

因此,我正在尝试实现类似 Imgur 的功能,其中非网站成员的用户可以上传,并继续编辑该上传(直到 cookie 被重置)。

查看conn结构体时,有 3 个地方会出现用户的 cookie。

conn.cookies["_APPNAME_key"]
conn.req_cookies["_APPNAME_key"]
List.keyfind(conn.req_headers, "cookie", 0)
Run Code Online (Sandbox Code Playgroud)

这些都返回相同的 cookie(除了最后一个有“_APPNAME_key=COOKIE”与其他 3 个的“COOKIE”)

三者有什么区别?有没有我应该使用的而不是其他的?

Yon*_* Hu 9

  • conn.cookies 请求 cookie 和响应 cookie
  • conn.req_cookies请求 cookie(没有响应的),当然有coon.resp_cookies响应 cookie。

List.keyfind(conn.req_headers, "cookie", 0)只需从请求的标头中获取 cookie,即conn.req_cookies.

你应该conn.req_cookies["_APPNAME_key"]在你的情况下使用。

有关更多详细信息,请参阅https://hexdocs.pm/plug/Plug.Conn.html#module-request-fields