を動作するようにTrustProxiesミドルウェアLaravel 5.4 relative instead of absolute 302 redirects
を取得できません、私は仕事にLaravel TrustProxiesミドルウェアを取得しようとしますが、X_FORWARDED_PROTOヘッダを無視しているように思われてきました。 (ちょうど5.4から5.5へのアップグレード)Laravelでがここに右方向に尖った後
私のシナリオ
私のアプリがHTTPSからHTTPにすべてのトラフィックを変換、ロードバランサの背後にあります。
私の問題は
すべてのリダイレクトではなく、元のHTTPSプロトコルのHTTPを介して行っています。
未遂ソリューション
5.5 Laravel 5.4からのアップグレードと今箱から出しLaravelに同梱されてTrustProxiesミドルウェアを活用します。
ミドルウェアがあります
protected $proxies = '*';
/**
* The current proxy header mappings.
*
* @var array
*/
protected $headers = [
Request::HEADER_FORWARDED => 'FORWARDED',
Request::HEADER_X_FORWARDED_FOR => 'X_FORWARDED_FOR',
Request::HEADER_X_FORWARDED_HOST => 'X_FORWARDED_HOST',
Request::HEADER_X_FORWARDED_PORT => 'X_FORWARDED_PORT',
Request::HEADER_X_FORWARDED_PROTO => 'X_FORWARDED_PROTO',
];
のApp \のHttp \カーネルは、ミドルウェア登録されている:
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\App\Http\Middleware\TrustProxies::class,
];
私の調査結果を:サーバーから
のTCPダンプは、ヘッダを明らかに:
をリクエスト:
GET/HTTP/1.1
X_FORWARDED_PROTO: HTTPS
Host: mywebsiteaddress.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1
が、応答はHTTP経由で場所を持っています
HTTP/1.1 302 Found
Date: Wed, 08 Nov 2017 18:03:48 GMT
Server: Apache/2.4.18 (Ubuntu)
Cache-Control: no-cache, private
Location: http://mywebsiteaddress.com/home
Set-Cookie: laravel_session=eyJp...In0%3D; expires=Wed, 08-Nov-2017 20:03:48 GMT; Max-Age=7200; path=/; HttpOnly
Content-Length: 376
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
追加コメント:
私のアプリが5.4から5.5にアップグレードされたので、私はそうしてきただろうクラスTrustProxiesをコピーそこには5.5の新インストールがあります。その後、カーネルに登録しました。
多分私はここで一歩足りません。
私の希望:私の疲れは、私は単純なミスを眺めてる私の心を曇らせていないことを
。
ご提案は、事前にお願いします!
更新:
アパッチで有効log_forensicsモジュールとIは、要求のx転送-プロトヘッダを参照。
なぜLaravelがヘッダー配列に含まれないのでしょうか?
ところで、私はdd($ _ SERVER)をしました。 routes/web.phpの直前にリダイレクトされ、couldnt 'はX_FORWARED_PROTOを見出します。 – Mario
あなたは5.4の上で動作しましたか? – Suraj
@Suraj私は5.4でテストしませんでした。なぜならそれはより多くの手動設定を表していたからです。私は成功率が高いと考えて5.5にアップグレードすることを選択しました。 新しい5.5モックアプリケーションでテストしようとしていますが、シナリオを再現するためにネットワークチームとのコラボレーションが必要です – Mario