【学習記録】『HTTPの教科書』第2章 読書メモ 〜N予備校の復習を添えて〜( https://qiita.com/Molly95554907/items/284dbc8ebb5c10b10021 )の続き
第3章
HTTPでやりとりする情報=HTTPメッセージと呼ばれる●HTTPメッセージの構成
・メッセージヘッダ
サーバーやクライアントが処理すべき、リクエストやレスポンスが書かれる
・メッセージボディ
転送されるべきデータそのもの
●エンコーディング
HTTPデータを転送の際にエンコードすると、転送効率があがる。
エンコーディングという処理をコンピューターで行うため、CPUのリソースはより多く消費する
圧縮して送る、分解して送る、などのエンコーディング処理がある。
第4章
HTTPステータスコード●200番台
成功!
リクエストが正常に処理された
200 OK:正常処理
204:リクエストは成功したけど返すリソースは無い
206:リクエストは成功したけど返すリソースは一部しか無い
N予備校 第3章14項
```js'use strict';
const http = require('http');
const server = http.createServer((req, res) => {
const now = new Date();
console.info('[' + now + '] Requested by ' + req.connection.remoteAddress);
res.writeHead(200, {
'Content-Type': 'text/html; charset=utf-8'
});
nowという変数で定義した中には、「ヘッダに200を返す」という処理。これは、リクエストは正常に処理されたと示すもの。
●300番台
リダイレクト
ブラウザ側で何か処理したらリクエストが正常に終了できる
●400番台
クライアントエラー
クライアントが原因でエラーが発生している。
400:Bad Request リクエストの構文が間違っている
404:Not Found リクエストしたリソースはサーバーに無い or サーバー側がそのリクエストを拒否したい
<h6>N予備校 第4章21項</h6>
```js
if (schedule && isMine(req, schedule)) {
if (parseInt(req.query.edit) === 1) {
const updatedAt = new Date();
schedule.update({
scheduleId: schedule.scheduleId,
scheduleName: req.body.scheduleName.slice(0, 255) || '(名称未設定)',
memo: req.body.memo,
createdBy: req.user.id,
updatedAt: updatedAt
}).then((schedule) => {
// 追加されているかチェック
const candidateNames = parseCandidateNames(req);
if (candidateNames) {
createCandidatesAndRedirect(candidateNames, schedule.scheduleId, res);
} else {
res.redirect('/schedules/' + schedule.scheduleId);
}
});
} else {
const err = new Error('不正なリクエストです');
err.status = 400;
next(err);
}
} else {
const err = new Error('指定された予定がない、または、編集する権限がありません');
err.status = 404;
next(err);
・追加したい候補が存在しない→400番を返す
・予定が見つからない場合や自分自身の予定ではない場合→404番を返す
●500番台
サーバーエラー
サーバーが原因でエラーが発生している
第5章
●バーチャルホスト 1台で複数ドメインを実現することができる。バーチャルホストを使う。バーチャルソフトを使うと、物理的にはサーバーが一台でも、複数台あるように扱える。同じIPアドレスで、異なるホスト名やドメイン名を持った複数のウェブサイトを稼働させられる。
●プロキシ
サーバーとクライアントの両方の役割を果たす中継プログラム。
クライアントからのリクエストをサーバーへ送る。
サーバーからのレスポンスをクライアントへ送る。
プロキシが転送することによって、キャッシュを使ったネットワークを効率化できる。webサイトへのアクセスポリシーを遵守させられる。
●ゲートウェイ
ゲートウェイの先にあるサーバーが、HTTPサーバー以外のサービスを提供するサーバーとなる。
クライアントとゲートウェイ間を暗号化することで、通信の安全性を高める。
●キャッシュ
プロキシサーバーや、クライアントのローカルディスクに保存されたリソースのコピー。キャッシュはwebページの情報を保存している。クライアントは何度も同じ情報をリクエストしなくていいので処理が早くなる
<疑問>
Cookieとの違いは?
↓
キャッシュはWebページの情報
Cookieはユーザーの情報
を保存している。