cowboy_req.set_resp_cookie.asciidoc 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. = cowboy_req:set_resp_cookie(3)
  2. == Name
  3. cowboy_req:set_resp_cookie - Set a cookie
  4. == Description
  5. [source,erlang]
  6. ----
  7. set_resp_cookie(Name, Value, Req :: cowboy_req:req())
  8. -> set_resp_cookie(Name, Value, [], Req)
  9. set_resp_cookie(Name, Value, Opts, Req :: cowboy_req:req())
  10. -> Req
  11. Name :: binary() %% case sensitive
  12. Value :: iodata() %% case sensitive
  13. Opts :: cow_cookie:cookie_opts()
  14. ----
  15. Set a cookie to be sent with the response.
  16. Note that cookie names are case sensitive.
  17. == Arguments
  18. Name::
  19. Cookie name.
  20. Value::
  21. Cookie value.
  22. Opts::
  23. Optional cookie options.
  24. Req::
  25. The Req object.
  26. == Return value
  27. A new Req object is returned.
  28. The returned Req object must be used from that point onward,
  29. otherwise the cookie will not be sent in the response.
  30. == Changelog
  31. * *2.0*: `set_resp_cookie/3` introduced as an alias to `set_resp_cookie/4` with no options.
  32. * *2.0*: The first argument type is now `binary()` instead of `iodata()`.
  33. * *1.0*: Function introduced.
  34. == Examples
  35. .Set a session cookie
  36. [source,erlang]
  37. ----
  38. SessionID = base64:encode(crypto:strong_rand_bytes(32)),
  39. Req = cowboy_req:set_resp_cookie(<<"sessionid">>, SessionID, Req0).
  40. ----
  41. .Set a cookie with an expiration time
  42. [source,erlang]
  43. ----
  44. Req = cowboy_req:set_resp_cookie(<<"lang">>, <<"fr-FR">>, [
  45. {max_age, 3600}
  46. ], Req0).
  47. ----
  48. .Delete a cookie
  49. [source,erlang]
  50. ----
  51. Req = cowboy_req:set_resp_cookie(<<"sessionid">>, <<>>, [
  52. {max_age, 0}
  53. ], Req0).
  54. ----
  55. .Set a cookie for a specific domain and path
  56. [source,erlang]
  57. ----
  58. Req = cowboy_req:set_resp_cookie(<<"inaccount">>, <<"1">>, [
  59. {domain, "my.example.org"},
  60. {path, "/account"}
  61. ], Req0).
  62. ----
  63. .Restrict a cookie to HTTPS
  64. [source,erlang]
  65. ----
  66. SessionID = base64:encode(crypto:strong_rand_bytes(32)),
  67. Req = cowboy_req:set_resp_cookie(<<"sessionid">>, SessionID, [
  68. {secure, true}
  69. ], Req0).
  70. ----
  71. .Restrict a cookie to HTTP
  72. [source,erlang]
  73. ----
  74. SessionID = base64:encode(crypto:strong_rand_bytes(32)),
  75. Req = cowboy_req:set_resp_cookie(<<"sessionid">>, SessionID, [
  76. {http_only, true}
  77. ], Req0).
  78. ----
  79. == See also
  80. link:man:cowboy_req(3)[cowboy_req(3)],
  81. link:man:cowboy_req:set_resp_header(3)[cowboy_req:set_resp_header(3)],
  82. link:man:cowboy_req:set_resp_headers(3)[cowboy_req:set_resp_headers(3)],
  83. link:man:cowboy_req:reply(3)[cowboy_req:reply(3)],
  84. link:man:cowboy_req:stream_reply(3)[cowboy_req:stream_reply(3)]