HTTP

Authorization

HTTP 401 UnauthorizedとWWW-Authenticateが返された時、ブラウザ(クライアント)側は、入力されたユーザー名とパスワードを':'で繋げて、Base64変換し、Authorizationヘッダに付けて送る。 サーバ側と一致すればアクセスできる。HTTP 認証 - HTTP | MDN Auth…

WWW-Authenticate

HTTP 401 Unauthorizedだけだと、ただ認証情報が無いってページ表示するだけなので、WWW-Authenticateヘッダで認証方法を示すと、ブラウザ側はユーザー名とパスワードの入力画面を出してくれる。HTTP 認証 - HTTP | MDN WWW-Authenticate - HTTP | MDNhttp_s…

HTTP 401 Unauthorized

401は、有効な認証資格が足りない時に返す。HTTP 認証 - HTTP | MDN 401 Unauthorized - HTTP | MDNhttp_server.cで、今回、ヘッダは"HTTP/1.1 401 Unauthorized\r\n"だけにする。 ボディは、"HTTP 401 Unauthorized"とタイトルとコンテンツに表示するだけ。…

Set-Cookie(Expires)

Expires属性を付けることで、Cookieの期限時刻を設定できる。HTTP Cookie の使用 - HTTP | MDN Set-Cookie - HTTP | MDN期限時刻を過ぎると、ブラウザのリクエストからクッキーが削除される。 /* アクセプトループ */ int accept_loop(int soc){ /* 変数の宣…

Set-Cookie

Set-Cookieヘッダは、複数付けることが出来る。HTTP Cookie の使用 - HTTP | MDN Set-Cookie - HTTP | MDNhttp_server.cで、複数のSet-Cookieで、名前と値の組み合わせを複数送る。 次のリクエストのCookieヘッダは1つだが、';'(セミコロン)区切りで複数の名…

Cookie

サーバからクッキーが送られてきて、ブラウザにクッキーをセットした後は、ブラウザはリクエストにCookieヘッダでクッキーの名前と値を付けて送る。HTTP Cookie の使用 - HTTP | MDN Cookie - HTTP | MDNサーバ側は、http_server.cで、Set-Cookieヘッダで、…

Cache-Control

HTTP/1.1では、Cache-Controlでキャッシュを制御する。HTTP キャッシュ - HTTP | MDN Cache-Control - HTTP | MDN /* レスポンスヘッダの作成. */ strcpy(response_header, "HTTP/1.0 200 OK\r\n"); /* response_headerに"HTTP/1.0 200 OK\r\n"をコピー. */ …

Pragma

Pragmaは、HTTP/1.0において、キャッシュを制御するヘッダで、基本的にno-cacheしか使わない。HTTP キャッシュ - HTTP | MDN Pragma - HTTP | MDNHTTTP/1.1が出てきてしまったので、HTTP/1.0の下位互換性のために残されているだけ。 前回、Expiresでキャッシ…

Expires

ここから、HTTPキャッシュの話。HTTP キャッシュ - HTTP | MDN Expires - HTTP | MDNブラウザの挙動として、キャッシュをさせるかさせないかというところに関して試してみると、キャッシュをさせないという命令については簡単なんだけど、逆にキャッシュをさ…

Location

Locationヘッダはリダイレクト先を指す。Location - HTTP | MDNいろんなレスポンスに使われる。 今回は302で使ってみる。"HTTP/1.1 302 Found"に変えただけ。 リダイレクトされる前回と同様にリダイレクトされる。 レスポンスはこうレスポンスはこう。Sample…

HTTP 301 Moved Permanently

301は、別のURLにリダイレクトする時に返す。301 Moved Permanently - HTTP | MDNhttp_server.cで、として、 ここにアクセスここにアクセス。 すると、 ここに飛ぶここに飛ぶ。 そして、 レスポンスもこうなってる最初のレスポンスもこうなってる。 (ただ、…

POST

HTTPメソッドのPOSTを使って、サーバにデータを送信する。POST - HTTP | MDNとはいえ、サーバは送られたリクエストをどう処理するか、Apacheでデフォルトの処理みたいなのは決められていない(それらの処理はCGIなどを作って自分で処理する。)ので、今回はロ…

GET

HTTPメソッドのGETで、サーバからページを取得する。GET - HTTP | MDN HTTPクライアントの作成(TCPクライアントサンプル):Geekなぺーじ今度は簡単なHTTPクライアントを作成し、bgstation0.comのApacheを相手にindex.htmlを取得する。GETの後に、取得するペ…

HTTP 200 OK

リクエストが成功した時は、HTTPサーバはHTTP 200 OKを返す。200 OK - HTTP | MDN /* 書き込み */ strcpy(send_buf, "HTTP/1.0 404 Not Found\r\n"); /* send_bufに"HTTP/1.0 400 Not Found\r\n"をコピー. */ strcat(send_buf, "Content-Length: 120\r\n"); …

HTTP 404 Not Found

リクエストされたリソースが見つからない時、HTTPサーバはHTTP 404 Not Foundを返す。404 Not Found - HTTP | MDN /* 書き込み */ strcpy(send_buf, "HTTP/1.0 404 Not Found\r\n"); /* send_bufに"HTTP/1.0 404 Not Found\r\n"をコピー. */ send(acc, send_…

Content-Type

Content-Typeにコンテンツ形式を指定する。Content-Type - HTTP | MDNhttp_server.cで、 /* 書き込み */ strcpy(send_buf, "HTTP/1.0 200 OK\r\n"); /* send_bufに"HTTP/1.0 200 OK\r\n"をコピー. */ strcat(send_buf, "Content-Length: 144\r\n"); /* send_…

Content-Length

通常はHTTPレスポンスヘッダのContent-LengthにHTTPレスポンスボディの長さ(バイト数)を指定する。Content-Length - HTTP | MDNhttp_server.cで、"ABCDE"をボディとするので、Content-Lengthは5。 ヘッダとボディの間には空行を入れる。 "ABCDE"が表示される…

HTTPステータスコード

以前から"ネットワーク"カテゴリをやろうと思ってたが、プロトコル個別の方が良いかなとおもって、"HTTP"カテゴリにした。 まずはHTTPステータスコードだけを返すサーバを作ってみた。HTTP | MDN HTTP レスポンスステータスコード - HTTP | MDNhttp_server.c…