我有一个简单的用例,其中客户端希望能够将用户友好的url重定向到vue-router url(具有id等)。因此,我做了以下(简化示例)。
@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/放入iPhone上的Safari或Chrome浏览器中。尽管控制器正确返回了“ redirect:https://www.example.com/”,但它仍重定向到“ https://www.example.com/#/users/1623123465/”(我已经用断点等检查过)。
有什么想法吗?
谢谢