У меня есть простой случай использования, когда клиент хочет иметь возможность перенаправить удобные для пользователя URL-адреса на URL-адреса vue-router, которые являются менее реальными (с идентификаторами и т. Д.).Поэтому я сделал следующее (упрощенный пример).
@Controller
@RequestMapping("/users")
public class RedirectController {
@Value("${server.baseUrl}")
private String baseUrl;
private final UserService userService;
@Autowired
public RedirectController(final UserService userService) {
this.userService = userService;
}
@GetMapping()
public String catchAll() {
return "redirect:" + baseUrl;
}
@GetMapping("/{userName}")
public String redirect(@PathVariable("userName") String userName) {
String url = "/";
if (userName.matches("[a-zA-Z]+(-[a-zA-Z]+)*")) {
User user = userService.findByUserName(userName);
if (user != null) {
url += "#/users/" + user.getHashedId();
}
}
return "redirect:" + baseUrl + url;
}
}
Так что это работает из настольных браузеров, но если я положу https://www.example.com/users/some-user/ в Safari или Chrome на моем iPhone.Он перенаправляет на «https://www.example.com/" несмотря на (и я проверял это с точками останова и т. Д.) Контроллер, правильно возвращающий» редирект: https://www.example.com/#/users/1623123465/".
Любые идеи?
Спасибо