Skip to content
This repository
Fetching contributors…

Cannot retrieve contributors at this time

file 59 lines (42 sloc) 1.711 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
<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>
Something went wrong with that request. Please try again.