質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
HTTPヘッダー

Hypertext Transfer Protocol(HTTP)の中のHTTPヘッダフィールドはHTTPの要求やレスポンスの機能しているパラメーターが含まれます。その要求もしくはレスポンスライン(メッセージの最初の一行)でメッセージヘッダを作ります。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2602閲覧

header('HTTP/1.1 200 OK')の効用がわかりません。

tt02

総合スコア36

HTTPヘッダー

Hypertext Transfer Protocol(HTTP)の中のHTTPヘッダフィールドはHTTPの要求やレスポンスの機能しているパラメーターが含まれます。その要求もしくはレスポンスライン(メッセージの最初の一行)でメッセージヘッダを作ります。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/05/29 12:07

header('HTTP/1.1 200 OK')の効用がよくわかりません。

  • 言語:php
  • MVC構造のresponse時など

具体的には二つほどわからないことがあります。
どうぞ、よろしくお願いいたします。

header('HTTP/1.1 200 OK')

このHTTP/1.1は何を意味しているのでしょうか。
200とOKは、リクエストされたコンテンツはきちんとありましたよ!
と理解しました。
しかし、上記のheaderはなくても正常に描画します。(少なくとも今作成中の物では)

また、画像のみを送るときは、

header('Content-Type: image/jpeg'); readfile ($filePath)

で正常に画像を返します。

しかし、このときに、

header('HTTP/1.1 200 OK'); header('Content-Type: image/jpeg'); readfile ($filePath)

としても同様に正常に画像が表示されます。

画像など、headerに特定のContent-Typeを指定するときに
その手前に、いつもおまじないのようにつけている
header('HTTP/1.1 200 OK');
をつけているサンプルコードを余り見ません。
ですが、つけても何もエラーは起きません。

いったい、
header('HTTP/1.1 200 OK');は何をしているのでしょうか。(質問1)
描画したいjpeg画像が本当に存在するなら、
header('Content-Type: image/jpeg');の前に、header('HTTP/1.1 200 OK');をつけてもいいのでしょうか。(質問2)

そもそも、必要な物なのかという事が知りたく質問致させていただきました。
なにか、参考になるわかりやすいサイトの情報などでも結構です。
特に質問2の回答がわかると助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/05/29 12:10

HTTP 1.1 で調べて出てくる情報では何が足りませんか? 調べたことを記載してください。
tt02

2020/05/29 13:37

質問1に関しては、 >http通信が成功していることをサーバーからクライアントに通知しています  で解決致しました。(yambejp様の回答により) 質問2に関しては https://www.php.net/manual/ja/function.header を見てもわかりませんでした。
m.ts10806

2020/05/29 20:14

質問本文に追記してください。
tt02

2020/05/30 22:53

>HTTP 1.1 で調べて出てくる情報では何が足りませんか? ”HTTP 1.1 で調べて出てくる情報” これが一番役立ちました。
guest

回答1

0

ベストアンサー

HTTP/1.1 200 OK

http通信が成功していることをサーバーからクライアントに通知しています。
そもそも成功しているからこそ返すので、phpでつけなくてもhttpdが勝手に
つけてくれるものです

投稿2020/05/29 12:11

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tt02

2020/05/29 12:23

yambejp様、情報ありがとうございます。 コードでつけなくても自動的に勝手に返すというのはとても納得できます。 ブラウザでheaderを確認すると、header関数をつけていない場合でも200 okは確認できるからです。 すると、むしろ、header('HTTP/1.1 200 OK');はすべての場合において明示するメリットがないと思うのですが、この理解は、間違いないでしょうか。
yambejp

2020/05/29 12:28

認識のズレがあるかもしれませんので あくまでphpが普通に実行される際にヘッダとしては意味がないというだけです たとえば301や404や500などエラーコードを返すphpをつくって 一定条件で200を返すなど、場合によっては論理的な意味はでてくるでしょう
yambejp

2020/05/29 12:43

ちなみに200番台のステータスはすべて成功用のものです
tt02

2020/05/29 13:18

詳しいご回答、大変ありがとうございます。 >たとえば301や404や500などエラーコードを返すphpをつくって よく理解できます。 私の方が認識のずれを生ませてしまいました。 質問の背景としては、 有名どころのフレームワークを使うほどではない、Webアプリを作成しています。 このアプリでは、 ・htmlのリクエスト、 ・pdfのリクエスト ・画像のリクエスト ・エクセル出力のリクエスト ・jsonのリクエスト の全部で5種類のリクエストがあります。 (今後増えるかもしれません。現在はそれらに個別に答えるレスポンスメソッドがあっちゃ、こっちゃにあります) それらの種類のリクエストにレスポンスする場合、 確実に返すべきコンテンツが正しく存在するときに限り、 いずれにも header('HTTP/1.1 200 OK')をつけることできるなら、 あるいは、いずれにも header('HTTP/1.1 200 OK')が不要なら、 汎化したメソッドを基底クラスに作りやすくなるため、 質問させていただきました。 もちろん、 その次に送るべきheaderのContent-Typeは変数化します。 諸々のサンプルを自分でも調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問