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的路由。
我在我希望仅支持 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的路由。