Laravel 表单 HTTPS 操作

Laravel form HTTPS action

我在我希望仅支持 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填错了协议?我怎样才能设置正确的?

使用 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,甚至是form to的路由。