Laravel 5重定向循环问题

3

I currently have a redirect loop when deploying my code on heroku but not on my local wamp server. Below is my middleware, its been properly registered. Im using laravel 5, Thanks

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Redirect;

class HttpsEnforcer
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next){   
        if(!$request->secure())
        {
            return redirect()->secure($request->path());
        }


        return $next($request);
    }
}


可能值得一看:http://stackoverflow.com/a/31298765/5641619 - Matt
是的,有些相关。但不幸的是,他也没有具体的答案。 - alaboudi
$_SERVER['HTTP_X_FORWARDED_PROTO']的值是否给出了您期望的结果?我猜测secure()方法检查的任何头文件都没有被Heroku正确设置。 - Jeemusu
在服务器上运行composer update并查看。有时过期的供应商会导致这种错误。 - Eranda
1个回答

1

Request::secure()检查HTTP_X_FORWARDED_PROTO头信息是否为https,确保其已设置。

如果您在负载均衡器后面,该负载均衡器监听443端口并将流量发送到80端口,并使用HTTP_X_FORWARDED_PROTO头信息,则需要使用Request::setTrustedProxies($LB_IP)


我认为你是对的,Junaid,但我仍在循环。我已经看到一些相关资料,但似乎所有的例子都是在Laravel 4中,而我在文档中找不到setTrustedProxies。 - alaboudi
目前,如果($request->header('HTTP_X_FORWARDED_PROTO')!='https')滿足if語句。 - alaboudi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接