回答:
サーバーは、次の応答ヘッダーを送信して、Cookieフィールドを設定します。
Set-Cookie:
名前=
値
Cookieが設定されている場合、ブラウザはリクエストヘッダーで以下を送信します。
Cookie:
名前=
値
詳細については、WikipediaのHTTP Cookieに関する記事を参照してください。
Cookieは、リクエスト(クライアント->サーバー)とレスポンス(サーバー->クライアント)の両方でHTTPヘッダーとして渡されます。
それが他の回答で書かれているものとは別に、Cookieのパス、Cookieの最大経過時間に関するその他の詳細、それが保護されているかどうかもSet-Cookie応答ヘッダーで渡されます。例えば:
Set-Cookie:
名前の=
値 [ ; expires=
日付 ] [ ; domain=
ドメイン ] [ ; path=
パス ] [ ; secure
]
ただし、次のHTTP要求を行うときに、これらの詳細のすべてがクライアントからサーバーに返されるわけではありません。
設定することもできます HttpOnly
Cookieの最後にフラグをして、JavaScriptによるスクリプトで、Cookieがhttponlyであり、アクセスを許可してはならないことを示すこともできます。これにより、セッションハイジャックなどの攻撃を防ぐことができます。
詳細については、RFC 2109を参照してください。Nicholas C. Zakasの記事、HTTP cookieの説明もご覧ください。
respとしてサンプルスクリプトを作成します。
#!/bin/bash
http_code=200
mime=text/html
echo -e "HTTP/1.1 $http_code OK\r"
echo "Content-type: $mime"
echo
echo "Set-Cookie: name=F"
次に、実行可能にして、このように実行します。
./resp | nc -l -p 12346
ブラウザを開いてURLを参照:http:// localhost:1236 ブラウザから送信されたCookieの値が表示されます
[aaa @ bbbbbbbb] $ ./resp | nc -l -p 12346 GET / HTTP / 1.1 ホスト:xxx.xxx.xxx.xxx:12346 接続:キープアライブ キャッシュ制御:max-age = 0 受け入れる:text / html、application / xhtml + xml、application / xml; q = 0.9、image / webp、* / *; q = 0.8 Upgrade-Insecure-Requests:1 ユーザーエージェント:Mozilla / 5.0(Windows NT 6.1)AppleWebKit / 537.36(KHTML、like Gecko)Chrome / 49.0.2623.112 Safari / 537.36 Accept-Encoding:gzip、deflate、sdch Accept-Language:en-US、en; q = 0.8、ru; q = 0.6 Cookie:name = F