2017-04-12 10 views
1

中に奇形ます、私はこのhrefを持つ画像リンクを持っています時間、これは動作します。しかし、最近では、param1param2がURLに添付されているように見えますが、無限ループで414 Request URI too longというエラーが発生しています。PHP URLだからリダイレクト

問題はランダムに発生し、returnの前にチェッカーを追加したため、どこを確認するかわからないということです。

if (substr_count($url, 'param1') > 1) { 
    $file = storage_path() . '/logs/logger.log'; 
    $log = "[ " . date("d-m-Y H:i:sa") . " ] [ {$request->ip()} ] - {$url} \n"; 
    file_put_contents($file, $log, FILE_APPEND); 
} 

また、ヒットを記録していません。テスターがバグを経験した後でさえも。

受信側アプリケーションが何らかの理由でURLを破棄している可能性はありますか? 私はどんな情報を探していますか?あなたはこれまでにこのような問題を経験しましたか?

これは原因である可能性があり、私のチェッカーが期待通りに動作しないことがありますか(ただし、テストしてテストURLを記録しました)。

問題についての助けがあれば助かります。

+0

無限ループURLの例を教えてください。 http_build_queryを使用する理由は何ですか?あなたはparam1とparam2以上しか持っていませんか? – borracciaBlu

+0

無限ループURLは 'www.target.com?param1=abc¶m2=xyz¶m1=abc¶m2=xyz¶m1=abc¶m2=xyz¶m1=abc¶m2=xyz ... 'のようなものです。時々私はより多くの時間を持っています。 – clueless

+0

あなたはhttpまたはhttpsで実行していますか? – borracciaBlu

答えて

0

http_build_queryと仮定すれば、問題:

さて、あなたは試すことができる1つの試みが$request->excepthttp_build_queryせずにコードを書き換えることです。 http_build_queryを使用する特別な理由がない場合は、$request->inputを使用することをお勧めします。 $要求 - >入力と

例:

function out (Request $request) { 
    $url = $request->target; 

    $param1 = $request->input('param1', ''); 
    $param2 = $request->input('param2', ''); 

    if (!empty($param1) || !empty($param2)) { 
     $url .= '?'; 
    } 

    if (!empty($param1) && !empty($param2)) { 
     $url .= 'param1=' . $param1 . '&param2=' . $param2; 
    } else { 
     $url .= !empty($param1) 'param1=' . $param1 : ''; 
     $url .= !empty($param2) 'param2=' . $param2 : ''; 
    } 

    return redirect($url); 
} 

ソリューションは、もう少し冗長ですが、それとは、冗長性を生成するためのコードではありません確かに100%にする必要があります。

不条理、リモート可能性:私はしようとするだろう

2つ目は、システムのログを確認することです。たとえば、apacheで実行している場合は、というファイルが/var/log/apache2/(または/var/log/nginx/、nginxの下に)ある必要があります。

ここには、すべてのHTTPリクエストの履歴が必要です。

おそらく、複数のパラメータを持つ有線リクエストの一部が奇妙なIPアドレスのものである可能性があります。 この場合、セキュリティ上の理由から、一部の企業がウェブサイトを監視してテストしている可能性があります(奇妙なパラメータが含まれている可能性があります)。
これが当てはまる場合、私はあなたがhttpの下にいると推測し、httpsに切り替える必要があります。

とにかく、新しいコードでは、コードについて確かめて、システムの他の部分を調べることができます。

関連する問題