我成功创建了一个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
答案 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;
}
}