- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 AWS elastic beanstalk 来部署我的 laravel 项目。一切正常,但我的 Assets 、路由无法获取真实用户 ip。
Assets:尽管我浏览 https,但它在调用 asset() 时引用了 http。从 https 读取 http Assets 的站点 block
路由:虽然我浏览https,但始终指向http
URL:虽然我浏览https,但总是返回http
IP:始终返回服务器 IP。永远不要获得真实的用户 IP。但它适用于其他服务器但不适用于 AWS elastic beanstalk
我该怎么办?欢迎任何解决方案,我们将不胜感激。
最佳答案
HTTPS
(Laravel Assets 和路由):您应用了 SSL/TLS 并且 URL 在浏览器中受到保护,但 Laravel 不会加载您的 Assets 并引发错误。该错误看起来像是阻止了 URL,因为您正在尝试加载 http URL http 请求。大多数人在使用 AWS 或任何其他云负载均衡器
时都会遇到这个问题。在终止 TLS/SSL 证书的负载均衡器后面运行您的应用程序时,您可能会注意到您的应用程序在使用 url 帮助程序时有时不会生成 HTTPS 链接。这通常是因为您的应用程序正在从端口 80 上的负载均衡器转发流量,并且不知道它应该生成安全链接。
IP
:另一个问题是IP问题。您无法获取用户/访客 IP,它始终返回服务器 IP。此问题也会因 代理
而发生。
解决方案
:当您使用 AWS 或任何云负载均衡器
时,您可能不知道实际 Loads Balancer
的确切 IP 地址所以应该允许所有代理,如下例所示。
使用 *
允许信任您的 TrustProxies
中间件中的所有代理。这是您的中间件 app/Http/Middlewares/TrustProxies.php
。
namespace App\Http\Middleware;
use Fideloper\Proxy\TrustProxies as Middleware;
use Illuminate\Http\Request;
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var string|array
*/
protected $proxies = '*';
/**
* The headers that should be used to detect proxies.
*
* @var int
*/
protected $headers = Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO;
如果您使用的是 AWS Elastic Load Balancing,您的 $headers 值应该是 Request::HEADER_X_FORWARDED_AWS_ELB。
有关 $headers 属性中可能使用的常量的更多信息,请查看 Symfony 的文档在 trusting proxies .
namespace App\Http\Middleware;
use Fideloper\Proxy\TrustProxies as Middleware;
use Illuminate\Http\Request;
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var array|string
*/
protected $proxies = '*';
/**
* The headers that should be used to detect proxies.
*
* @var int
*/
protected $headers = Request::HEADER_X_FORWARDED_AWS_ELB;
我认为它可以解决您的 HTTPS、IP 和其他与代理相关的问题。要阅读更多详细信息,请阅读 Laravel doc .
解决方案 2
:还有另一种允许 https 的方法,方法是强制加入您的 AppServiceProvider
或创建一个新的中间件来实现它。在我的代码片段中,我决定使用 AppServiceProvider
因为易于实现。在任何文本编辑器中打开 app/Providers/AppServiceProvider.php
并编写 $this->app['request']->server->set('HTTPS', true);
。您可以在生产模式下额外检查该 APP。
if(request()->getRequestUri() != '/health' && $this->app->environment('production')) {
$this->app['request']->server->set('HTTPS', true);
}
request()->getRequestUri() != '/health'
用于AWS ALB安全组的健康检查
,因为它不支持https。
URL::forceScheme('https')
将 Assets url 强制为 https。最后的解决方案 2 和 3 仅适用于 Assets 、https 和 url(),但不适用于真实 IP。所以我建议使用第一个解决方案,因为它适用于所有情况。如果您不想允许代理,那么解决方案 2 是最有效的。
如果您遇到任何其他问题或需要改进,请在下方发表评论。
祝你好运。享受吧!
关于在 AWS Elastic Beanstalk 中部署后浏览 https 时,Laravel Assets 、路由和 url() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68964382/
我在我的应用程序中使用rails 4 和 ruby 1.9.3 以及fancybox2-rails gem,但是 Assets 管道存在一个普遍问题。如果我运行 rake task 进行预编译,那
我把我所有的 Assets 都放在我的包里例如myBundle/Resources/public/css/ 然后像这样加载它们: {% block stylesheets %} {{ parent()
我正在创建RoR-6应用程序,并从此行的application.html.erb文件中引发以下错误: javascript_include_tag 'application', 'data-turbo
我正在对 Play Subproject 功能进行更多扩展测试,如下所述:http://www.playframework.com/documentation/2.0/SBTSubProjects .
我是 symfony 2 和 Assetic 的新手。我想在 CSS 中使用 assetic 和 Sass。我使用自定义字体。我在资源下的包中创建文件夹“assets/css”,里面有 _base.s
这是我的目录结构(这只是一个测试项目): stan@mypc:/generate_assets$ sudo tree -L 3 -p . ├── [drwxr-xr-x] assets │ └─
我使用 node.js connect/express。 有人知道支持 TypeScript 源代码即时编译和缩小的 Assets 管理器吗? 知道如何以编程方式调用编译器吗? 我一直在使用 conn
因此,我们在 Assets 管道摘要方面遇到了一个小问题,因为我们有许多 HTML 模板作为 Assets (对于 AngularJS),并且我们使用 asset_path 在 Javascript
我想从iPad的照片库中获取图像URL。 当我尝试从Image Piicker的信息中获取 UIImagePickerControllerReferenceURL 时 我将URL设为: assets
我正在使用带有Assetic的Symfony 2.1.10版,并且在上次 Composer 更新之后,当我尝试运行php app/console assetic:dump时出现以下错误 Dumping
我的 Assets 管道有问题,我已经有一个名为 Assets 的资源/ Controller 。所以我已将 assets.prefix 选项更改为“/externals”。 config.asset
更新到 Expo sdk 34 后,出现此错误:TypeError:Asset.fromModule 不是函数。 (在“Asset.fromModule(image)”中,“Asset.fromMod
将 Play 框架项目从 2.2.4 迁移到 2.3.8 后遇到问题: 这是运行命令“activatorcompile”的错误输出: [error] ...\workspace\testproject
我在将 Google Analytics 添加到我的 Rails 4 应用程序时遇到了一些困难(参见 this post)。 我通过在 /public/assets/google-analytics.
我正在使用 Symfony2 和 Assetic。最近我一直在做很多 CSS 工作,所以在某个时候我需要命令 $ php app/console assetic:dump --env=prod --n
我正在 Android 开发中迈出第一步,并遇到了 Assets 一词。 据我了解, Assets 只是一个未被解析或引用为资源的文件。 这个词有更准确的定义吗?我应该在哪些情况下在我的应用程序中使用
我添加了 danial-farid--angular-file-upload通过 Rails Assets 将库添加到我的 Rails 4 应用程序。主库加载正常,但 sprockets 找不到它包含
这是我的代码,尽管编码非常粗糙: public void loadStack(AssetManager manager, String path) { String[] lis
我正在使用 Assets 管理我的 Symfony 2 框架中的 CSS 文件。它在生产模式下运行良好。 我的问题是在 Debug模式下,assetic 不断将我的文件合并为一个输出文件。这使得跟踪特
我想以编程方式从重复的相册中删除 Assets (照片不是)。我可以使用照片框架删除相册 我想知道如何从相册中删除 Assets 而不从照片应用中完全删除它。我想在多个地方使用它,例如将 Assets
我是一名优秀的程序员,十分优秀!