🪛

HTTP/HTTPsとの違いとは? Status Codeの使い方

2024/06/06に公開

HTTP(Hyper Text Transfer Protocol)とは

  • Hyper Text伝送するプロトコル
    最近はHyper Textではなく、Hyper mediaと言ってもいいと思います。
  • インターネット上で情報をやり取りできるフォトコール
  • クライアントとサーバとの間で行われた要求/応答(requset/response)のためのプロトコル

HTTPSとは

  • HTTPでセキュリティがさらに追加されたプロトコル
    全世界のウェブサイトの57%以上がHTTPsで作られている
  • クライアントとサーバがデータのやり取りを行う際に暗号化処理(TLS/SSL)になっているため、第三者が内容を見ることができない

SSLとは

  • SSL(Secure Sockey Layer)は、セキュリティソケット階層
  • データを安全に送信するためのインターネット暗号化通信プロトコル
  • 電子商取引などのセキュリティのためネットスケープ(netscape)で初めて作った

TLSとは

  • SSL以降に標準化して作られたのがTLS
  • SSL/TLSでまとめて分類される

Status Codes

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
サーバからクライアントにresponseを送信するときは、Status Codeを一緒に含めて送信します。
Status Codeは3つの数字で構成されているが、この3つの数字だけでサーバーでどのように処理されたのか処理された結果の情報が含まれているため、きちんとしたコードを送らなければならない

1XX

ある情報を表示
100(Continue): 状態が良好であり、クライアントが引き続き要請したり要請が完了した場合には無視しても良いという情報を知らせてくれる。
102(Processing): 要請したことを処理中に示す

2XX

クライアントからのリクエストがサーバーで正常に処理されたことを意味
200(OK): 成功したという意味
201(Created): 特定のリソースを作ることを要請するならば、その特定のリソースが成功的に作られたことを意味
204(No Content): 要請したことを処理したが、コンテンツはないという意味

3XX

リダイレクションのために使われる。
クライアントが要求したURLが他の場所に移動したときに他の場所に移動するように表示する。
301(Moved Permanently): 要請したものを他のURLに永久に移動したという意味
302(Found): 要請したのは、糖分を一時的に別のURLに移動したという意味
303(See Other): 302と同じ意味だが、get要請でのみ使用できるコードである

4XX

クライアントが間違った方法で要求したときに表示
400(Bad Request): クライアントが何かを要求したとき、クエリーが正しくなかったり、APIを間違った方法で使用したりするときに使用
401(Unauthorized): 特定のキーを持っている人だけが要請できるURLであるにもかかわらず、権限のない人が要請した時に使用
403(Forbidden): ログインしたユーザーですが、特定の仕事を遂行する権限がない場合
404(Not Found): URLが存在しない場合
405(Method Not Allowed): 当該URLが使用または削除する機能を許可しない場合
409(Conflict): クライアントが作成しようとするリソースが存在する場合(衝突の場合)

5XX

サーバで予期しないエラーが発生したときに表示
500(Internal Server Error): サーバー内で問題が発生して処理できない場合
502(Bad Gateway): 途中にあるサーバーが要請を受けて処理しなければならないのにどうすればいいのか分からない時
503(Service Unavailable): サーバーがまだ準備できていないとき

結論

HTTPステータスコードは、サーバーがクライアントのリクエストをどのように処理したかを示す重要な情報です。 各コード範囲は特定の意味を持ち、これによりクライアントは要求の成否、リダイレクト、クライアントエラー、サーバーエラーなどを把握できます。
HTTPとHTTPSの概念を理解し、様々なステータスコードを適切に活用することは重要な技術です。 また、Node.jsのようなサーバ側の技術を一緒に勉強すれば、クライアントとサーバ間の通信をより効率的に管理することができるでしょう。 これにより、より安全で効率的なウェブ アプリケーションを開発できるようにしたいと思います

Discussion