首页 > 解决方案 > 在 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>

谢谢你的帮助。

标签: angularwildflywarhttp-status-code-403

解决方案


它可能关注的对象:403 错误是由于基于哈希的定位策略而发生的。URI 中以 # 开头的所有内容在发送到客户端之前都会被删除。在我的示例中,URL 以/app/它被 undertow 识别为目录结尾。由于默认情况下不允许目录列表,因此返回 403。解决方案是实现一个 WebFilter 来检测这个请求并重定向到 angular page /app/index.html


推荐阅读