0

Guzzle6きれいなオプションが 1 つあります: allow_redirects. このオプションを値に設定すると、応答コードがparamのようなまたはパラメーターを持っているfalse場合、Guzzle はリダイレクトをブロックします。302HeadersLocation

しかし、問題が 1 つあります。リダイレクトがクライアントによって送信された場合 – Guzzle はこれに気づきません。例えば:

http://example.com/ページ にリダイレクトされたURLがありますhttp://redirected.com/。help Guzzle でリクエストを送信:

$oClient->request('POST', 'http://redirected.com/', [
    'form_params' => $aFormData,
    'cookies' => (new CookieJar($aPrepareCookie)),
    'debug' => true,
    'allow_redirects' => false
]);

次のようになっredirect.comているとします。index.php

<?php
    header('Location: http://www.example.com/');
?>

この場合、リダイレクトは Guzzle からブロックされます。

それでは、このリダイレクトの例を見てみましょう:

<?php
    echo '<script>window.location = "http://www.example.com/";</script>';
?>

これはクライアント側のリダイレクトであり、彼は に影響を与えることができないため、ここで問題がありますHeaders。したがって、GuzzleHTTP ステータス コードまたは場所の値を追跡できません。

では、どうすればこの問題を解決し、解決策を見つけることができますか?

手伝ってくれてありがとう!

4

1 に答える 1

1

以前の投稿者が言ったように、Guzzle は JavaScript を実行しません。

あなたの問題は、 Guzzle Middlewareを利用することで簡単に解決できます。

ミドルウェア内:

  • 応答を受け取る
  • window.location="someurl" の本文を解析します
  • 「someurl」のリクエストを実行する
  • 「someurl」からの応答のヘッダーを変更して、リダイレクトであったという事実を含めます。
  • 応答を返します。
于 2015-11-24T16:30:09.130 に答える