В моем приложении laravel мне нужно, чтобы одна страница была поверх https, потому что я хочу, чтобы пользователь использовал свой микрофон.
Метод getUserMedia и в настоящее время разрешен только через https https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins
Для производительности я только хочу, чтобы эта страница, которая делает аудиозапись, была по https. Но это также означает, что мне нужно загружать все свои активы через https с «secure_asset» только на этой странице. Это означает, что у меня будет что-то вроде этого в моем главном клинке для всех моих активов:
@if(Request::is('record'))
<script type="text/javascript" src="{{secure_asset('/js/jquery.js')}}"></script>
@else
<script type="text/javascript" src="{{asset('/js/jquery.js')}}"></script>
@endif
Каков наилучший и самый чистый способ достичь этого с помощью маршрутизации Laravel?
использование 'https' => true]
в вашем routes.php
только для этого маршрута / страницы — это кажется мне очень чистым.
Пример:
Route::post('/yourroute', ['uses' => 'YourController@method', 'https' => true]);
Обновить
Вы также можете использовать .htaccess
файл в вашем public
папка.
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Redirect specific route to HTTPS
# The rule is looking for the content between ^ and $ and if found in the URL it redirects to https://www.example.com/yourroute
RewriteRule ^yourroute$ https://www.example.com/yourroute [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
И да, для ваших активов вы должны иметь оператор if-else, который вы уже используете. Вы можете использовать secure_asset()
asset(..., true)
помощник.
Других решений пока нет …