关于Https

之前的代码想转移到https,在配置了nginx(包括http跳转),可是在一些**表单页**会出现这种情况

https.png捕获.PNG

* 说明:表单页的url是使用url辅助函数生成的完整url

于是我改了app/config/app.php中的url为https://xxx| 6e43625a5ca3914c043159589be1fda68 |,发现还是没有用。(也有这里没配置好的原因,暂时不清楚)

然后去看了一下辅助函数的文档

* secure_asset()

* 根据 HTTPS 生成资源文件网址:

echo secure_asset('foo/bar.zip', $title, $attributes = []);

--

* asset()

* 根据目前请求的协定(HTTP 或 HTTPS)生成资源文件网址:

$url = asset('img/photo.jpg');

发现了这两个用于生成https的函数

于是想知道url函数和URL::函数有没有相关的方法或者参数用于生成https网址

补充:http://stackoverflow.com/questions/36400609/laravel-5-2-url-function-to-return-https-urls| 6e43625a5ca3914c043159589be1fda615 |

这个问题几乎和我一样,回答是使用secure_url('/'),测试后可用。

但是问题是:这样我要在所有地方更改url函数,会非常麻烦,所以想知道有没有更优雅的解决方案。

zaxk

。。。说好的markdown语法,怎么都没解析。。。

JellyBool

好像也没有,我之前就是因为这个问题改了很多 url,而且如果你使用代理的话,https 又是一个需要注意的地方

zaxk

@JellyBool 在 APPServiceProvider 的 boot 方法加了一条

$this->app['request']->server->set('HTTPS', true);

还可以加上过滤生产环境的条件
不知道这样是不是比较好的解决办法

JellyBool

恩,我昨晚就是做的这个

if(env('APP_ENV') === 'production'){
            $this->app['request']->server->set('HTTPS',true);
        }

但是如果是使用负载均衡代理的话,可以参考这两个内容:
http://serverfault.com/questions/527780/nginx-detect-https-connection-using-a-header

http://serverfault.com/questions/515957/how-to-have-nginx-forward-the-http-x-forwarded-proto-header