angular - 在 Wildfly 中刷新 Angular 应用程序时出现错误 403
问题描述
我已经使用哈希位置策略实现了一个 Angular 6 应用程序,并希望将其部署为 Wildfly 中的 WAR。应用程序运行良好,但是重新加载页面(例如http://localhost:9390/MyApp/app/#/login)会导致 403 禁止错误。这是设置:
WAR文件:
/app/* -> angular app generated by ng-cli
/error403.html -> simple error page
/WEB-INF
/WEB-INF/web.xml
/WEB-INF/classes/... REST services
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>MyApp</display-name>
<welcome-file-list>
<welcome-file>app/index.html</welcome-file>
</welcome-file-list>
<error-page>
<error-code>403</error-code>
<location>/error403.html</location>
</error-page>
</web-app>
谢谢你的帮助。
解决方案
它可能关注的对象:403 错误是由于基于哈希的定位策略而发生的。URI 中以 # 开头的所有内容在发送到客户端之前都会被删除。在我的示例中,URL 以/app/
它被 undertow 识别为目录结尾。由于默认情况下不允许目录列表,因此返回 403。解决方案是实现一个 WebFilter 来检测这个请求并重定向到 angular page /app/index.html
。
推荐阅读
- pandas - Seaborn FacetGrid 包括已删除级别的空列/行
- javascript - 使用 jQuery 的单个 td 中的文本节点选择器
- java - 将全名拆分为名字和姓氏,然后结合代码与程序一起使用
- php - 在 OS X 10.15.7(又名 OSX14)上使用 phpbrew 安装 PHP-7.3 失败
- java - 给定一个字符串,确定字符串的排列是否可以在 Java 中形成回文
- python - 正则表达式非捕获组
- ios - 在 SwiftUI 中的某些视图周围环绕文本
- java - 从 lamdba 重新抛出异常
- python - Discord bot 无法从 EC2 实例正确运行
- javascript - 安全区域插入(例如安全区域插入底部)忽略 Safari 'Aa' 缩放级别?