我在一个我想成为HTTPS的应用程序中使用Laravel。
在https://example.com/p
上显示的一个视图中,我打开了一个这样的表单:
{{ Form::open(['method' => "POST", "id" => "whatever"]) }}
Laravel将其解析为:
<form method="POST" action="http://example.com/p" accept-charset="UTF-8" id="whatever">
这看起来很不错,但请记住,这是在HTTPS页面上,因此在显示页面时我收到混合内容警告。
但情况变得更糟。我将我的服务器配置为将HTTP请求重定向到相应的HTTPS资源。这意味着,我的浏览器将表单内容发布到服务器,服务器将其重定向到HTTPS位置。然后,浏览器会丢弃POST请求,并向服务器发送一个常规的GET请求,从而产生与之前用过的页面完全相同的页面。
为什么Laravel填写了错误的协议?我该如何设置正确的?
答案 0 :(得分:1)
使用https
选项定义您的路线,并将该路线调用以形成行动。
例如“
路线
Route::group(array('https'), function(){
// all of our routes
//for your form acction
Route::post('form', array('as' => 'form/action', 'uses' => 'ExampleController@postForm'));
}
因此,https组下的路由应该是https,甚至是表单的路由。