jhipster 刷新 url 导致 "Cannot GET /user-management"

jhipster refresh url cause "Cannot GET /user-management"

我成功创建了一个 jhipster 应用程序,然后使用 admin/admin 登录,单击用户管理,一切正常,url 更改为 localhost:9000/user-management。

但是,当我使用 chrome 刷​​新按钮刷新 url 时,页面中断并显示消息:"Cannot GET /user-management",在按 F12 启动调试器后,它在控制台中显示以下错误消息:

拒绝执行内联脚本,因为它违反了以下内容安全策略指令:"default-src 'self'"。启用内联执行需要 'unsafe-inline' 关键字、散列 ('sha256-GKWAMtgBzlCzmucztJIeDl/kD0MKNqAT5HDcFIff2+A=') 或随机数 ('nonce-...')。另请注意 'script-src' 未明确设置,因此 'default-src' 用作备用。

请帮忙,提前致谢。

注:yarn v1.3.2, "@angular/core": "5.2.0", java 1.8, jwt, elasticsearch, 中文, mysql, angular 5

如果您设置 useHash: false 并单击刷新,请求将发送到服务器,因此您会收到与您遇到的确切错误:服务器正在处理但未找到的客户端路由。因此,您必须使用 servlet 过滤器调整服务器端,请参阅 https://github.com/jhipster/generator-jhipster/issues/4794#issuecomment-304097246

中的详细信息

另请注意,这种方法不适用于微服务架构中的网关。

这是您可以调整的此类过滤器的示例,它将对客户端路由的请求转发到“/”,以便它们被 index.html 中的 angular 应用程序解释:

public class AngularRouteFilter extends OncePerRequestFilter {

    // add the values you want to redirect for
    private static final Pattern PATTERN = Pattern.compile("^/((api|swagger-ui|management|swagger-resources)/|favicon\.ico|v2/api-docs).*");

    @Override
    protected void doFilterInternal(HttpServletRequest request,
                                    HttpServletResponse response,
                                    FilterChain filterChain)
        throws ServletException, IOException {
        if (isServerRoute(request)) {
            filterChain.doFilter(request, response);
        } else {
            RequestDispatcher rd = request.getRequestDispatcher("/");
            rd.forward(request, response);
        }
    }

    protected static boolean isServerRoute(HttpServletRequest request) {
        if (request.getMethod().equals("GET")) {
            String uri = request.getRequestURI();
            return PATTERN.matcher(uri).matches();
        }
        return true;
    }
}