jhipster刷新网址导致“无法获取/用户管理”

时间:2018-02-01 16:08:01

标签: angular jhipster angular5 yarnpkg

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

然而,当我使用chrome刷新按钮刷新url时,页面中显示消息:“无法GET /用户管理”,按F12启动调试器后,它在控制台中出现以下错误消息:

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

请提前帮助,谢谢。

注:纱线v1.3.2,“@ angular / core”:“5.2.0”,java 1.8,jwt,弹性搜索,中文,mysql,angular 5

1 个答案:

答案 0 :(得分:3)

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

中的详细信息

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

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

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;
    }
}