0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【学習記録】『HTTPの教科書』第3章〜第5章 読書メモ 〜N予備校の復習を添えて〜

Last updated at Posted at 2020-04-08

【学習記録】『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はユーザーの情報
を保存している。

●課題
結局サーバーって何?物理的にどのような形をしているのか。ローカルホストといえば、サーバー室にあるパソコンが思い浮かぶけど、ネットワーク上にあるサーバーと言われるとイメージがつかない・・・
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?