У нас есть приложение, работающее на PHP 5.5 & Laravel 5.2. Он имеет область учетной записи пользователя, в которой все маршруты имеют префикс/account /. Маршрутом по умолчанию для области учетной записи является/account/services. Пользователи перенаправляются на эту страницу по умолчанию после входа в систему.Маршрутизация не работает должным образом при щелчке по URL в Word или Excel (PHP, Laravel)
Конечно, если пользователь вводит URL-адрес определенной учетной записи, такой как example.com/account/billing, они переходят на страницу фактурирования при входе в систему (или напрямую, если они уже прошли проверку подлинности).
Однако, если я нажму https://example.com/billing в Excel или Word, я перейду на страницу по умолчанию/учетная запись/услуги (если аутентифицирован, в противном случае я туда туда после входа в систему).
Сначала я считал, что это связано с тем, что они вставляют скрытые символы и таким образом аннулируют URL-адрес, заставляя наше приложение маршрутизировать пользователя по умолчанию.
Так что я попробовал эти решения:
trim()
URL-адрес- Удаление неразрывные пробелы:
$url = preg_replace('~\x{00a0}~','',$reqURL);
- функцию, чтобы удалить метку порядка байтов (Sourced here)
Я даже скопировали тестовые URL-адреса из браузера в АЭС и считались шестнадцатеричными. Кажется, нет никаких дополнительных символов.
Если я вручную ввожу один и тот же URL-адрес в панель браузера, все работает отлично.
Это происходит только для URL-адресов, для которых требуется аутентификация, общедоступные/внешние URL-адреса кажутся незатронутыми. Это привело меня к this answer, но я не уверен, что это применимо в нашем случае. Microsoft действительно запускает обнаружение протоколов Microsoft Office, прежде чем открывать эти URL-адреса в браузере, но наш cookie-аутентификация распознается (браузер открывается на страницу входа в систему, но сразу же перенаправляется в область учетной записи, если у пользователя есть действительный файл cookie).
Неужели кто-нибудь еще испытал это? И на какие другие причины я мог смотреть?