mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-15 04:30:25 +00:00

The Opts value is put last, to be more consistent with the rest of the cowboy_req module. Additionally a test handler was fixed which reduced the number of errors in http_SUITE.
109 lines
2.3 KiB
Text
109 lines
2.3 KiB
Text
= cowboy_req:set_resp_cookie(3)
|
|
|
|
== Name
|
|
|
|
cowboy_req:set_resp_cookie - Set a cookie
|
|
|
|
== Description
|
|
|
|
[source,erlang]
|
|
----
|
|
set_resp_cookie(Name, Value, Req :: cowboy_req:req())
|
|
-> set_resp_cookie(Name, Value, [], Req)
|
|
|
|
set_resp_cookie(Name, Value, Req :: cowboy_req:req(), Opts)
|
|
-> Req
|
|
|
|
Name :: binary() %% case sensitive
|
|
Value :: iodata() %% case sensitive
|
|
Opts :: cow_cookie:cookie_opts()
|
|
----
|
|
|
|
Set a cookie to be sent with the response.
|
|
|
|
Note that cookie names are case sensitive.
|
|
|
|
== Arguments
|
|
|
|
Name::
|
|
|
|
Cookie name.
|
|
|
|
Value::
|
|
|
|
Cookie value.
|
|
|
|
Req::
|
|
|
|
The Req object.
|
|
|
|
Opts::
|
|
|
|
Cookie options.
|
|
|
|
== Return value
|
|
|
|
A new Req object is returned.
|
|
|
|
The returned Req object must be used from that point onward,
|
|
otherwise the cookie will not be sent in the response.
|
|
|
|
== Changelog
|
|
|
|
* *2.0*: `set_resp_cookie/3` introduced as an alias to `set_resp_cookie/4` with no options.
|
|
* *2.0*: The first argument type is now `binary()` instead of `iodata()`.
|
|
* *1.0*: Function introduced.
|
|
|
|
== Examples
|
|
|
|
.Set a session cookie
|
|
[source,erlang]
|
|
----
|
|
SessionID = base64:encode(crypto:strong_rand_bytes(32)),
|
|
Req = cowboy_req:set_resp_cookie(<<"sessionid">>, SessionID, Req0).
|
|
----
|
|
|
|
.Set a cookie with an expiration time
|
|
[source,erlang]
|
|
----
|
|
Req = cowboy_req:set_resp_cookie(<<"lang">>, <<"fr-FR">>,
|
|
Req0, #{max_age => 3600}).
|
|
----
|
|
|
|
.Delete a cookie
|
|
[source,erlang]
|
|
----
|
|
Req = cowboy_req:set_resp_cookie(<<"sessionid">>, <<>>,
|
|
Req0, #{max_age => 0}).
|
|
----
|
|
|
|
.Set a cookie for a specific domain and path
|
|
[source,erlang]
|
|
----
|
|
Req = cowboy_req:set_resp_cookie(<<"inaccount">>, <<"1">>,
|
|
Req0, #{domain => "my.example.org", path => "/account"}).
|
|
----
|
|
|
|
.Restrict a cookie to HTTPS
|
|
[source,erlang]
|
|
----
|
|
SessionID = base64:encode(crypto:strong_rand_bytes(32)),
|
|
Req = cowboy_req:set_resp_cookie(<<"sessionid">>, SessionID,
|
|
Req0, #{secure => true}).
|
|
----
|
|
|
|
.Restrict a cookie to HTTP
|
|
[source,erlang]
|
|
----
|
|
SessionID = base64:encode(crypto:strong_rand_bytes(32)),
|
|
Req = cowboy_req:set_resp_cookie(<<"sessionid">>, SessionID,
|
|
Req0, #{http_only => true}).
|
|
----
|
|
|
|
== See also
|
|
|
|
link:man:cowboy_req(3)[cowboy_req(3)],
|
|
link:man:cowboy_req:set_resp_header(3)[cowboy_req:set_resp_header(3)],
|
|
link:man:cowboy_req:set_resp_headers(3)[cowboy_req:set_resp_headers(3)],
|
|
link:man:cowboy_req:reply(3)[cowboy_req:reply(3)],
|
|
link:man:cowboy_req:stream_reply(3)[cowboy_req:stream_reply(3)]
|