мы используем приложение Angular 2 с Typescript. Сервер представляет собой облегченный NancyFX (C#), который настроен на ответ с перенаправлением на «/», если выполняется неизвестный вызов API.
Итак, что мы пытаемся сделать: приложение запущено, пользователь вошел в систему. Теперь он хочет открыть вторую вкладку, что делается с помощью «открыть ссылку в новой вкладке» или с помощью CTRL+Click.
Приложение снова открывается в новой вкладке с каким-то URL-адресом маршрута (например, «/order/5»). Сервер отвечает перенаправлением на «/» (базовый угловой маршрут), приложение запускается, загружает весь угловой материал, перенаправляется на базовый маршрут и проверяет, доступен ли токен для пользователя, и если да, то -> он должен перенаправить на URL-адрес исходного запроса
Проблема: Исходный URL-запрос ("/order/5") пропал, так как сервер перенаправляет только на "/".
Есть ли ЛЮБАЯ возможность сохранить URL-адрес (например, в локальном хранилище), чтобы клиент знал, куда перенаправить?
Я кое-что читал о чтении событий клавиш/щелчков, но все это немного хакерски.
Единственный способ, который я вижу, - это сохранить URL-адрес в коде сервера, но это нужно делать для каждого сеанса браузера отдельно ИЛИ с каким-то окном. история, но как мы должны знать, является ли это новым сеансом или просто обновлением страницы? ?
Мы используем PathLocationStrategy по умолчанию.
У кого-нибудь есть идеи или это просто невозможно?
ОБНОВЛЕНИЕ: Хостинг-модуль My Nancy
public HostingModule()
{
Get["/"] = o => Response.AsFile(Path.Combine(Response.RootPath, "index.html"));
Get["/{ignored*}", ctx => ctx.Request.Headers.Accept.Any(x => x.Item1 == "text/html")] = o =>
{
return Response.AsFile(Path.Combine(Response.RootPath, "index.html"));
};
}
Таким образом, все запросы с заголовком text/html должны приниматься и возвращать index.html по умолчанию. Это работает.
НО: проблема в том, что все файлы в index.html запрашиваются относительно исходного пути: например.
Первый запрос: "foo.com/order/5" -> ответ index.html -> после этого клиент начинает загружать все скрипты в index.html -> но так как запрос был foo.com/order/5 все скрипты пытался загрузить так: foo.com/order/script1.js вместо foo.com/script1.js
-> Так что я получаю только беспорядок из 404 ошибок, или если я сохраняю свой обработчик StatusCodehandler перенаправления для ошибок 404, он снова и снова перенаправляет клиента на index.html...
Но спасибо за помощь