Я настроил два маршрута
Route::get('/bugreport', 'SomeController@create')
->middleware('signed')
->name('bugreport');
Route::get('/getlink', function() {
return dd(\URL::signedRoute('bugreport', ['data' => 3]));
});
Когда APP_ENV=local
, я могу посетить /getlink
, затем нажать на полученный URL и показать его.Когда APP_ENV=production
(реальная физическая среда не изменилась при изменении переменной), это больше не работает ... с неверной подписью.Какие-либо предложения?
ОБНОВЛЕНИЕ:
У нас есть ... что может быть его частью
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
if (!config('app.is_local')) {
URL::forceScheme('https');
}
}
Примечание: удаление приведенного выше кода на самом деле решает эту проблему, но затемломает, например, логин ... так что либо нужно понять почему, либо это не вариант :(.
Обновление обновления:
Среда - геройка, а .htaccess имеет (согласноhttps://help.heroku.com/J2R1S4T8/can-heroku-force-an-application-to-use-ssl-tls)
#### FORCE SSL
## see - https://help.heroku.com/J2R1S4T8/can-heroku-force-an-application-to-use-ssl-tls
RewriteCond %{HTTP_HOST} !=localhost
# If we receive a forwarded http request from a proxy...
RewriteCond %{HTTP:X-Forwarded-Proto} =http [OR]
# ...or just a plain old http request directly from the client
RewriteCond %{HTTP:X-Forwarded-Proto} =""
RewriteCond %{HTTPS} !=on
# Redirect to https version
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
### End Force SSL