Это нормально настройки location.href для принудительной маршрутизации на стороне сервера? - PullRequest
0 голосов
/ 05 января 2019

Я работаю над веб-приложением React с серверной частью Asp.Net Core + Typescript. Маршрутизация находится на внешнем интерфейсе, управляемом React-Router v4. Пока все работает нормально.

Кстати, бывают случаи, когда мне нужно (я хочу) перенаправить маршрутизацию сервером вместо того, чтобы пропустить ее в логику браузера. Например, я хочу принудительно перенаправить на определенную страницу, когда файл cookie отсутствует или просрочен.

Как, например, если я использую что-то вроде <Redirect to="/reserved" />, React.Router делает все возможное: направляется к «зарезервированной» странице, но это не то, что я хочу. Мне нужно, чтобы этот путь был предоставлен серверу, то есть в обход обходной интерфейсной маршрутизации.

В таких случаях решение, которое я нашел, состоит в том, чтобы установить желаемый путь следующим образом:

window.location.href = '/reserved';

Это похоже на отправку запроса нового пути прямо на сервер без (явного) участия в React.Router. Видимо, все работает нормально, как я ожидаю.

Вопрос в том, является ли это надежным способом достижения желаемого поведения, или это выглядит весьма вероятным взломом (и я должен избегать его)?

1 Ответ

0 голосов
/ 06 января 2019

В контексте одностраничного приложения (SPA), независимо от используемой платформы или технологии, установка window.location в явном виде является прекрасным способом оставить управление маршрутизацией SPA и заставить браузер выполнять фактический HTTP-запрос для этого нового маршрута.

Конечно, это означает, что вся страница будет выгружена, поэтому при этом вы покидаете свой SPA. Если этот целевой URL-адрес затем загружает тот же SPA снова, это обычно будет отвлекать пользователя. Вот почему обычные реализации маршрутизатора SPA будут перехватывать изменения маршрута и обрабатывать их через собственную маршрутизацию вместо того, чтобы браузер делал фактический запрос.

Вы должны проверить документацию вашего маршрутизатора, чтобы увидеть, можете ли вы добавить некоторые средства защиты маршрутизатора, которые позволяют вам проверять вещи при загрузке или при изменении маршрута, чтобы вы могли перемещать пользователя в какое-то принудительное местоположение.

Если этот целевой URL не является частью SPA, тогда, конечно, настройка window.location вполне подойдет. Это, конечно, не хак, а скорее правильный способ изменить местоположение без прохождения через маршрутизатор SPA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...