Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

61 lines (42 sloc) 1.711 kb
<erl>
out(A) ->
{ssi, "TAB.inc", "%%",[{"cookies", "choosen"}]}.
</erl>
<div id="entry">
<h1>Yaws and Cookies</h1>
<p>
Cookies are the means in HTTP to assign data to a session. A HTTP session
typically consists of many (and sometimes concurrent) TCP connections from the
client to the web server. The first time a client arrives to our webserver, we
issue the HTTP header <tt>Set-Cookie: var=someval</tt>. The browser will then in
subsequent connections to the same server pass this cookie "var=someval" in its
client side <tt>Cookie: var=someval</tt> header. We can thereby assign state to a
session, either through data actualy encoded into the cookie value itself, or by
associating server side session data to the cookie.</p>
<p>
Let's do an example where we set a simple cookie, and create a specific erlang process
which is then responsible for that session.
The cookie value will be a string encoding of the pid handling the session.
</p>
<p>
The yaws code in
<a href="setcookie.yaws">setcookie.yaws</a> sets the cookie in the browser.</p>
<p>And the yaws code in <a href="readcookie.yaws">readcookie.yaws</a>
will read the cookie
and report some uninteresting session data.
</p>
<p>
A correct definition of cookies can be found at Netscapes
<a href="http://www.netscape.com/newsref/std/cookie_spec.html">cookie spec</a></p>
<p>The code to set the cookie looks like:</p>
<erl>
out(A) ->
{ok, B} = file:read_file(A#arg.docroot ++ "/setcookie.yaws"),
{ehtml,
{'div', [{class, "box"}],
{pre,[], B}}}.
</erl>
</div>
<erl>
out(A) -> {ssi, "END2",[],[]}.
</erl>
Jump to Line
Something went wrong with that request. Please try again.