В нашем приложении у нас есть страница оплаты, на которую мы хотим использовать SSL, потому что мы обрабатываем информацию о кредитной карте. Мы уже внедрили правила перезаписи для apache, чтобы перенаправить запрос на конкретную страницу на HTTPS, - который заботится о любых прямых запросах к странице платежа (http://oursite.com/pay).
Однако большинство навигации на нашем сайте выполняется с помощью относительных URL-адресов и states
с помощью ui-router
в angularjs, и мы обнаружили, что apache не улавливает эти запросы и поэтому служит страница без SSL.
EX Если пользователь нажимает ссылку с ui-sref='pay'
ui-router
, загружает шаблон и обновляет состояние - ни в коем случае не является запросом, сделанным сервером для нового uri, поэтому apache не может перенаправить на https
Есть ли способ заставить ui-router (или angular в целом) заставить государство использовать HTTPS без необходимости менять все ссылки для перезагрузки всего сайта?
Конечно, это также может быть недостатком в наших правилах перезаписи... Вот что мы до сих пор
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} /pay
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^ index.html [L]
Второй набор правил - принудительное применение html5mode для нашего приложения.
RewriteCond %{REQUEST_FILENAME} !-f
на месте, чтобы angular мог получить шаблон оплаты для состояния без необходимости использования SSL. Это нормально?