Laravel 5 中间件 https 上的 aws ec2 重定向循环

Posted

技术标签:

【中文标题】Laravel 5 中间件 https 上的 aws ec2 重定向循环【英文标题】:Laravel 5 middleware https on aws ec2 redirect loop 【发布时间】:2015-05-16 02:39:39 【问题描述】:

基于this,我在我的应用中添加了相同的中间件,结果是重定向循环。

如果用户未通过身份验证,应用程序将重定向到登录页面,所以对我来说这就是问题所在。也可能不是。

ssl 证书已正确安装并且可以正常工作(如果我手动转到https://myapp.org,它会按预期工作)。

主要问题是我在整个应用程序中使用了帮助程序 url() 来生成 url,现在我需要重定向到安全 url。

我尝试删除该中间件,并将重定向添加到 .htaccess 但结果相同(此网页有重定向循环)。

更新 我试图调试问题,看起来没有重定向到 https,这就是重定向循环的原因。我为标题添加了日志....


  "host": [
    "myapp.org"
  ],
  "accept": [
    "text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/webp,*\/*;q=0.8"
  ],
  "user-agent": [
    "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/41.0.2272.76 Safari\/537.36"
  ],
  "accept-encoding": [
    "gzip, deflate, sdch"
  ],
  "accept-language": [
    "en-US,en;q=0.8"
  ],
  "cookie": [
    "XSRF-TOKEN=..."
  ],
  "x-forwarded-for": [
    "IP ADDRESS"
  ],
  "x-forwarded-host": [
    "myapp.org"
  ],
  "x-forwarded-server": [
    "ip-IP.compute.internal"
  ],
  "connection": [
    "Keep-Alive"
  ]

我还记录了$request->secure() 的值,它总是错误的。

这是我的中间件(日志结果在每个日志行旁边的注释中)

<?php namespace App\Http\Middleware;

use Closure;
use Log;

class HttpsProtocol

  /**
   * Redirect to https.
   *
   * @param  \Illuminate\Http\Request  $request
   * @param  \Closure  $next
   *
   * @return mixed
   */
  public function handle($request, Closure $next)
  
    if(!$request->secure() && app()->environment() === 'production') 
      Log::info(app()->environment()); // "production"
      Log::info($request->secure()); // ""
      Log::info($request->header('x-forwarded-proto')); // ""
      Log::info(json_encode($request->header())); // The json just posted
      Log::info($request->getRequestUri()); // "/auth/login"
      return redirect()->secure($request->getRequestUri());
    

    return $next($request);
  


我的应用程序位于 Elastic Beanstalk(EC2 单实例)中。 任何帮助将不胜感激,谢谢。

【问题讨论】:

我在这里找到了解决方案***.com/questions/20363051/… 谢谢!我整天都在想办法解决这个问题。 【参考方案1】:

有一个package 和一个gist 可以解决上述问题。

【讨论】:

以上是关于Laravel 5 中间件 https 上的 aws ec2 重定向循环的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 5.1 上的控制器构造函数之前运行中间件?

Laravel 5.6 上的 Ajax 身份验证重定向

Laravel - 让 laravel 5 应用使用 https

Aws-sdk-php-laravel 在 laravel 5.2 中得到 500 错误

Laravel 8 上的 League/flysystem-aws-s3-v3 其他软件包需要较低版本

Laravel 5 - 发布路由上的 htaccess HTTPS 重定向不起作用。