cowboy_req.set_resp_cookie.asciidoc 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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, Req :: cowboy_req:req(), Opts)
  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. Req::
  23. The Req object.
  24. Opts::
  25. Cookie options.
  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. Req0, #{max_age => 3600}).
  46. ----
  47. .Delete a cookie
  48. [source,erlang]
  49. ----
  50. Req = cowboy_req:set_resp_cookie(<<"sessionid">>, <<>>,
  51. Req0, #{max_age => 0}).
  52. ----
  53. .Set a cookie for a specific domain and path
  54. [source,erlang]
  55. ----
  56. Req = cowboy_req:set_resp_cookie(<<"inaccount">>, <<"1">>,
  57. Req0, #{domain => "my.example.org", path => "/account"}).
  58. ----
  59. .Restrict a cookie to HTTPS
  60. [source,erlang]
  61. ----
  62. SessionID = base64:encode(crypto:strong_rand_bytes(32)),
  63. Req = cowboy_req:set_resp_cookie(<<"sessionid">>, SessionID,
  64. Req0, #{secure => true}).
  65. ----
  66. .Restrict a cookie to HTTP
  67. [source,erlang]
  68. ----
  69. SessionID = base64:encode(crypto:strong_rand_bytes(32)),
  70. Req = cowboy_req:set_resp_cookie(<<"sessionid">>, SessionID,
  71. Req0, #{http_only => true}).
  72. ----
  73. == See also
  74. link:man:cowboy_req(3)[cowboy_req(3)],
  75. link:man:cowboy_req:set_resp_header(3)[cowboy_req:set_resp_header(3)],
  76. link:man:cowboy_req:set_resp_headers(3)[cowboy_req:set_resp_headers(3)],
  77. link:man:cowboy_req:reply(3)[cowboy_req:reply(3)],
  78. link:man:cowboy_req:stream_reply(3)[cowboy_req:stream_reply(3)]