当前位置: 首页 > 面试题库 >

在Springboot中将未知请求重定向到index.html

鱼志学
2023-03-14
问题内容

我正在尝试通过springboot Web应用程序提供Angular2应用程序。我已经找到了许多非常简单的方法示例:

https://spring.io/blog/2015/01/12/spring-and-angular-js-a-secure-single-page-
application#using-spring-boot-cli

https://github.com/zouabimourad/angular2-spring/tree/master/front

https://github.com/ehirsch/spring-
angular2

但是,这些示例非常简单,它们基本上只是显示了如何显示碰巧是Angular的静态内容。

它们都没有显示如何处理Angular2应用程序使用的任何URL(我称它们为路由),这些URL不会映射到“真实”资源。

例如。Angular应用程序中有一个“ / login”路由,但是对此没有@ Controller / @ RequestMapping(“ /
login”),我希望Spring在看到对“ /”的请求时呈现index.html。登录”。

一般来说,我希望Spring在无法提供实际资源的情况下呈现“ index.html”。有没有一种方法可以为所有无法映射到某物或找到的请求设置默认视图?

我以前通过使用htaccess文件解决了这个问题,并让apache处理:

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule . index.html [L]
   ErrorDocument 404 /index.html
</IfModule>

但是在这种情况下,我不能使用apache或nginx。


问题答案:

作为一项全面的工作,我在RequestMapping注释中添加了“角线”,并将它们全部指向index.html

@RequestMapping({"/login", "/logout"})
public String index() { return "index.html"; }

编辑:作为一种更好ErrorControllergetErrorPath方法,您可以使控制器实现,重写该方法,然后添加一个映射,/error该映射将充当通用(或缺少映射)方法。

@Controller
public class TheOneController implements ErrorController {

    @RequestMapping("/error")
    public String index() {
        return "index.html";
    }

    @Override
    public String getErrorPath() {
        return "index.html";
    }
}

现在,该index方法将处理所有无法找到的内容并呈现index.html



 类似资料:
  • 我将spring saml扩展与Apache2.2+Tomcat7.0+OKTA(IdP)一起使用。securitycontext.xml如下所示: MetadataGeneratorFilter: 谢谢 奈良 HTTP请求转储:

  • 我试图点击一个postendpoint,但它给出了错误302,当我在同一台服务器上尝试另一个get Url时,它给出了200。然后,我使用laxrirectstrategy()重定向了post请求。post请求正在重定向到get请求(只有同一个endpoint的方法名是get和post),它没有从post方法获得响应。有人能告诉我如何使用apahce httpClient 4.5将post请求重定

  • 问题内容: 我想使用jQuery来获取URL,并明确检查它是否响应302重定向,但 不 遵循重定向。 jQuery 似乎总是遵循重定向。如何防止这种情况,并且不遵循重定向就可以看到重定向? 标题有很多问题,例如“ jquery ajax redirect”,但它们似乎都涉及实现其他目标,而不仅仅是直接检查服务器给出的状态。 问题答案: AJAX请求永远不会有机会不遵循重定向(即,它必须遵循重定向)

  • 我们的整个网站将通过https提供服务。我在每条路线上都有“https”。但是,如果他们试图通过http将其重定向到https,我该如何将其重定向到https?

  • 当我们使用AWS应用型负载均衡将传入请求重定向到我们的服务器时,我们创建了一个SSL证书并将其设置为负载均衡器。它同时监听HTTP 80和HTTPS 443端口的流量。在这两种情况下,流量都被重定向到目标组实例的HTTP 80端口。 在这些情况下,有nginx服务器配置为侦听它们所在的实例的HTTP 80端口。 当我更新nginx.conf文件以将传入的HTTP请求重定向到HTTPS协议时,我们面

  • 问题内容: 这是我的standalone-full.xml配置,其中ssl配置了 security realm . Subsystem Socket Binding 问题答案: 重写规则可用于重定向用户。在undertow子系统(standalone.xml或domain.xml)中,你需要创建一个新的重写过滤器,然后在新的fitler-ref中启用该过滤器: 在过滤器部分中创建新的重写过滤器。在