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

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

新規登録して質問してみよう
ただいま回答率
85.50%
cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

PHP

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

Q&A

解決済

1回答

5187閲覧

curl でリダイレクト時の request header の取得

退会済みユーザー

退会済みユーザー

総合スコア0

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

PHP

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

0グッド

0クリップ

投稿2017/03/13 02:48

PHP の curl を使用して、掲示板投稿のテストを実施しているのですが、request header の取得に関して質問です。

掲示板の挙動として、post 後にリダイレクトを発生させるのですが、リダイレクト前(post時)の request header がうまく取得できません。

response header は、リダイレクト前後のモノが取れているので、なんらかの方法があるのではないかと思っているのですが。。。

取得方法は以下のとおりです。

CURLOPT_FOLLOWLOCATION => true, CURLINFO_HEADER_OUT => true, CURLOPT_HEADER => true,

request header は、curl_getinfo($ch1,CURLINFO_HEADER_OUT) を参照。
response header は、curl_exec($ch1) に出力されたものを参照。

マニュアルを見る限り、直近のとか最新のとかの表現がないため、なにか勘違いして記述しているせいで取れていないのではないかと思っています。
curl_getinfo

CURLINFO_HEADER_OUT - 送信したリクエスト文字列。 これを動作させるには、curl_setopt() をコールする際に CURLINFO_HEADER_OUT オプションを使うようにしておく必要があります。

curl_getinfo($ch1,CURLINFO_HEADER_OUT)の抜粋

GET リダイレクト先 HTTP/1.1 Host: … Accept-Encoding: gzip …

curl_exec($ch1)の抜粋

HTTP/1.1 302 Found Content-Type: text/html; charset=UTF-8 … Location: … HTTP/1.1 200 OK Content-Encoding: gzip … <!DOCTYPE html> <html> …

CURLOPT_FOLLOWLOCATION を無くすと、ちゃんと post していることが確認できるのですが、当然自動ではリダイレクトしません。できれば一連の流れをログとして確認したいと思っています。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

curl -L $URLをやりたいってことですよね?

これでは駄目でしょうか。
[PHP][cURL] cURLでリダイレクトをたどるようにする

投稿2017/04/25 07:33

lazhuward

総合スコア1294

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

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

退会済みユーザー

退会済みユーザー

2017/04/25 09:17

リダイレクト自体はオプションの設定(CURLOPT_FOLLOWLOCATION => true)でできているのですが、リダイレクト時の request header がうまく取れず困っています。 つまり 1.POSTして 2.リダイレクトされて、リダイレクト先が表示される 2の request header は取得できるのですが、1の POST が取れません。 取得の方法を御存知だったりしますか?分割して取得するしかないですかね?
lazhuward

2017/04/25 10:27

あーたしかに発信元はリダイレクト先情報になってた気がしますね。 こういうやり方で、リダイレクト元の情報を書き出してみてはどうでしょうか。 http://cl.pocari.org/2009-02-16-1.html
退会済みユーザー

退会済みユーザー

2017/04/27 05:14

追記ありがとうございます。 いろいろ試してみたんですけど、どうもPOST+リダイレクト時の挙動を誤解していたようです。 リンク先を参考に挙動確認をしていて気がつきました。 * Switch from POST to GET POST は、GET としてリダイレクトされるんですかね? ちょっとデータの取扱等の挙動理解に時間がかかりそうなんで、一旦質問をクローズします。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問