【HTTP】HTTPレスポンスのステータスコードについて

Web関連の情報を読んでいると「HTTPリクエスト」「HTTPレスポンス」というキーワードを目にするかと思います。

簡単に説明すると、WebサーバーにHTTPリクエストを送り、データを要求します。

そして、要求に対してHTTPレスポンス(応答)が返ってきます。

 

単純なこの「要求」「応答」がHTTPの基本です。

 

 

HTTPレスポンスとは?

 

HTTPレスポンスとは、上で説明したようにHTTPリクエストを送ったことによる応答です。

この応答はデータ(HTMLファイル、画像など)として返ってきます。

 

 

もっと細かく言いますと、HTTPレスポンスは「レスポンスヘッダ」「データ本体(Object-body)」で構成されています。

 

HTTPレスポンスの例

試しにGoogle.comにHTTPリクエストを送信してみます。

[test@SAKURA_VPS ~]$ curl -k -i https://www.yahoo.co.jp
HTTP/1.1 200 OK ← ステータスコード
Date: Tue, 17 Oct 2017 14:37:39 GMT ← 応答した時刻
P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p_jp.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Vary: Accept-Encoding
Expires: -1
Pragma: no-cache
Cache-Control: private, no-cache, no-store, must-revalidate
X-XRDS-Location: https://open.login.yahooapis.jp/openid20/www.yahoo.co.jp/xrds
Content-Type: text/html; charset=UTF-8
Age: 0
Transfer-Encoding: chunked
Connection: keep-alive ← 現在の状態
Via: http/1.1 edge2073.img.djm.yahoo.co.jp (ApacheTrafficServer [c sSf ])
Server: ATS ← Yahooが利用しているHTTPサーバーです。ATSは「Apache Traffic Server」の略です。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="content-style-type" content="text/css">
<meta http-equiv="content-script-type" content="text/javascript">
<meta name="description" content="日本最大級のポータルサイト。検索、オークション、ニュース、メール、コミュニティ、ショッピング、など80以上のサービスを展開。あなたの生活をより豊かにする「ライフ・エンジン」を目指していきます。">
<meta name="robots" content="noodp">
<meta name="google-site-verification" content="fsLMOiigp5fIpCDMEVodQnQC7jIY1K3UXW5QkQcBmVs">
<link rel="canonical" href="https://www.yahoo.co.jp/" />
<link rel="alternate" media="only screen and (max-width: 640px)" href="https://m.yahoo.co.jp/">
<link rel="alternate" href="android-app://jp.co.yahoo.android.yjtop/yahoojapan/home/top">
<title>Yahoo! JAPAN</title>
<style type="text/css"><!--
body{word-break:break-all;font:12px/1.22 "Osaka","MS Pゴシック",Arial,sans-serif;*font-size:small;*font:x-small;}
table{font-size:inherit;font:100%;}
pre,code,kbd,samp,tt{font-family:monospace;*font-size:108%;line-height:99%;}
h1,h2,h3,h4,h5{font-size:100%;}
#p{width:350px;}
a{color:#1d3994;text-decoration:none;}
a:visited{color:#941d55;}
a:hover{text-decoration:underline;}
--></style>
<style type="text/css" media="all"><!--
form{margin:0;}
#p{border:1px solid #7e9db9;}

 

 

Yahoo!のサイトのレスポンスの速さは「Apache Traffic Server」が原因だった

Yahoo!は巨大なポータルサイトでYahoo!トップページのPV数は1日億単位のアクセスがあると言われています。

また日本国内のインターネットユーザーの8割は「Yahoo! Japan」を利用していると言われています。

 

https://s.yimg.jp/images/listing/pdfs/serviceguide_all.pdf

 

なぜこれだけのアクセス数をさばけるのか?

その秘密がHTTPサーバーにありました。

Yahoo! Japan は「Apache Traffic Server」を利用しています。

「Apache Traffic Server」は、オープンソースの HTTP キャッシュプロキシサーバーです。

通常 HTTP サーバー(Webサーバー)と言えば「Apache HTTP Server」が有名ですが、「Apache Traffic Server」とは違います。

ちなみに「Apache Traffic Server」はYahoo!が自社開発をしたキャッシュサーバーでオープンソース化したそうです。

 

Apache Traffice Server のサイト

Apache Traffic Server はオープンソースなので誰でもダウンロードをして利用することができます。

http://trafficserver.apache.org/

 

 

確かに公式サイトを読むと以下の記述がありました。

「Formerly a commercial product, Yahoo! donated it to the Apache Foundation,」

 

 

 

ステータスコード

HTTPリクエスト対してHTTPレスポンスが返ってきますが、その際に「ステータスコード」も一緒に返します。

「ステータスコード」は非常に重要で、プログラムからみてHTTPリクエストが成功したのか失敗したのかが分かるからです。

例えば指定されたデータがない場合や、アクセスが許可されていない場合はエラーが返されます。

  • ファイルが見つからない場合 → 404 (Not Found)
  • 認証に失敗した場合 → 401 (Unauthorized)

など。

このステータスコードを元にWebアプリケーションが成功したのか失敗しのか、失敗した場合はなぜ失敗したのかが分かります。

 

 

ちなみに「HTTP/1.1」では

  • 100~
  • 200~
  • 300~
  • 40O~
  • 500~

の5種類に分類されています。

 

カテゴリコード説明
1xxInformational正常(リクエストは正常に処理されて、処理が続いている状態)
100Continue
101Switching Protocols
2xxSuccess正常(リクエストは正常に受理された状態)
200OK
201Created
202Accepted
203Non-Authoritative Information
204No Content
205Reset Content
206Partial Content
3xxRedirectionリクエストが完了するために他の処理が必要な状態
300Multiple Choices
301Moved Permanently
302Moved Temporarily
303See Other
304Not Modified
305Use Proxy
4xxClient Errorクライアント側の問題によるエラー(間違ったリクエストなど)
400Bad Request
401Unauthorized
402Payment Required
403Forbidden
404Not Found
405Method Not Allowed
406Not Acceptable
407Proxy Authentication Required
408Request Time-out
409Conflict
410Gone
411Length Required
412Precondition Failed
413Request Entity Too Large
414Request-URI Too Large
415Unsupported Media Type
5xxServer Errorサーバー側の問題によるエラー
500Internal Server Error
501Not Implemented
502Bad Gateway
503Service Unavailable
504Gateway Time-out
505HTTP Version not supported

 

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人

コメントを残す

メールアドレスが公開されることはありません。