【问题标题】:How to stop spring-boot embedded-undertow from adding trailing slash如何阻止 spring-boot Embedded-undertow 添加斜杠
【发布时间】:2019-02-06 15:07:12
【问题描述】:

当我调用我的 spring-boot 应用程序的上下文根“localhost:8080/api/players”时,它通过注解 @GetMapping(path= {"/ 映射到 RestController 方法中",""}), 总是重定向 (httpstatus: 307 临时重定向) 到 "localhost:8080/api/players/" 在末尾添加斜杠。

我的应用程序上下文根确实是 /api/players,如 spring-boot application.properties 文件(server.servlet.context-path=/api/players)

我已经尝试使用嵌入式 tomcat,并且通过设置属性 server.tomcat.redirect-context-root=false

可以正常工作

有没有办法配置 undertow 像 tomcat 一样工作?

【问题讨论】:

    标签: java spring spring-boot undertow embedded-server


    【解决方案1】:

    查看源码看了一下,好像相关代码在ServletInitialHandler.java,如果请求是升级请求,会发出307重定向状态码...除非请求是HTTP 2 升级请求。这似乎不能由服务器配置,尽管有一些尝试根据客户端的操作来避免重定向。

    可能值得查看您的 HTTP 请求,更好地了解您的 HTTP 客户端是否确实在发出升级请求,然后考虑接受这一事实,或者更改客户端以发出不同类型的请求(可能通过发送 HTTP2 升级请求标头)。

    【讨论】:

    • 首先,感谢您的帮助,更具体地说,我有这种情况:React 应用程序在 OPTIONS 中调用我的服务(因为 cors 过滤器),得到这个 307 并且显然无法获取数据.如果我使用诸如邮递员之类的工具禁用“自动跟随重定向”选项,则相同
    猜你喜欢
    • 2014-12-08
    • 2015-08-07
    • 2020-06-02
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多