当前位置: 首页 > 知识库问答 >
问题:

Spring Boot“重定向:/path”不起作用-实际上返回字符串“redirect:/path”

丁英韶
2023-03-14

我正在尝试从一个控制器重定向到另一个控制器。它应该与关键字“重定向”一起工作,但不是重定向到其他控制器,而是得到以下响应:

这是我的控制器:

@RestController
@Api(value = ConsentConstants.GET_HEALTH_V1, tags = {ConsentConstants.SWAGGER_API})
@Slf4j
@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class GetHealthController implements GetHealthApi {

  final Tracer tracer;

  @Override
  public Object getHealthCheck() {
    return "redirect:/actuator/health";
  }
}

我尝试重定向的原因是因为健康检查(Spring引导致动器)在我部署服务时不工作。在本地,它工作正常,但部署后,我收到 /actuator/healthendpoint的401未经授权(其他endpoint工作正常)。所以我想尝试使用一个工作endpoint(例如状态/健康,然后重定向到 /actuator/health)

我没有使用Spring MVC,这有什么不同吗?

共有1个答案

冀鸿才
2023-03-14

这种重定向方式只适用于常规控制器,而不适用于rest服务。无法解析名为/actuator/health的“视图”。

这仅在文件名为注册的视图需要解析时有效:

return "redirect:registration";

要在restcontroller中重定向,可以执行以下操作:

@GetMapping("/healthcheck")
public void getHealthCheck(HttpServletResponse response) throws IOException {
  response.sendRedirect("/actuator/health");
}

但是,如果您只想更改Spring执行器的运行状况endpoint,这里将对此进行解释。

在应用中。特性:

management.endpoints.web.base-path=/whatever
management.endpoints.web.path-mapping.health=healthcheck
 类似资料:
  • 通过重定向界面,您可以将域或特定网页的所有访问者或流量发送到新域。 例如,如果您将网站移至新域并且想要将所有访问者重定向到新网站,则需要设置重定向。 有两种类型的重定向可用 - Permanent (301) Redirect 这会将您的访问者重定向到新网站并更新访问者的书签。 这也会将搜索引擎引导到您的新网站。 此重定向是渗透性的,意味着页面已移动。 因此,搜索引擎和其他抓取工具会根据新链接更新

  • GETRANGE key start end 返回key 中字符串值的子字符串,字符串的截取范围由start 和end 两个偏移量决定(包括start 和end 在内)。可以使用负值,字符串右面下标是从-1开始的。 注意返回值处理: 1: start>=length, 则返回空字符串 2: stop>=length,则截取至字符结尾 3: 如果start 所处位置在stop右边, 返回空字符串

  • 重定向到一个 URL 。 使用 window.location.href 或 window.location.replace() 重定向到 url 。 传递第二个参数来模拟链接点击(true - 默认值)或HTTP重定向(false)。 const redirect = (url, asLink = true) => asLink ? (window.location.href = url)

  • 问题内容: 检查这样的情况后,我有一条重定向的路线 条件为真但未安装组件时,URL会更改。其余的组件代码如下。 我的应用程序组件包含在BrowserRouter中,例如thi 当我在浏览器中直接命中url时,例如’localhost:3000 / intro’组件已成功安装,但是当它通过重定向时,它不会显示该组件。我如何解决它? 因此缺少一个细节,我尝试创建另一个项目来重现该问题。我的App组件是

  • 我对编码非常陌生,刚刚接触过静态方法,所以我为这些愚蠢的错误提前道歉。在main下调用该方法时,该方法应该显示一个三角形,但我得到的控制台是空的,没有输出。但是,如果我将此写在main下: 然后,三角形将显示在控制台中,但是对于这个赋值,字符串/三角形必须仅通过使用来调用

  • 我将这个字符串从客户端发送到服务器: 该字符串是由服务器打印出来的,所以它是正确的。 “AR”是数据包名称,值是弓箭手将要射出的箭的速度。 这里出什么问题了?