Spring Boot 请求重定向后浏览器的地址展示的是原url还是重定向的url
时间: 2024-04-29 08:19:39 浏览: 97
如果使用Spring Boot进行请求重定向,浏览器的地址会展示重定向的URL而不是原始URL。这是因为在请求重定向时,服务器会向浏览器发送一个重定向响应,其中包含重定向的URL。浏览器会根据这个响应进行重定向,并将重定向的URL显示在地址栏中。如果您希望在浏览器地址栏中显示原始URL而不是重定向的URL,可以使用转发而不是重定向。
相关问题
spring boot重定向请求后,怎么向请求增加token
在Spring Boot应用中,当需要重定向请求并附加额外信息,比如token,通常会使用`RedirectView`或者在HTTP响应头添加`Location`字段。下面是一个简单的例子:
1. **使用RedirectView**:
```java
@GetMapping("/login")
public RedirectView login() {
// 获取token
String token = generateToken();
// 创建一个RedirectView对象,并设置目标URL和属性
RedirectView redirect = new RedirectView("your-target-url", true);
redirect.setFlashAttributes(Map.of("token", token));
return redirect;
}
```
这里`generateToken()`是你自定义的一个方法生成token。`true`表示将属性包含在响应的flash数据中,以便在重定向后访问。
2. **通过Response Body**:
如果你想直接在重定向前返回带有token的响应,可以创建一个自定义的`ResponseBodyAdvice`来修改响应体:
```java
@ResponseBodyAdvice
public class TokenAdderResponseAdvice implements ResponseBodyAdvice<String> {
@Override
public String beforeWrite(String body, MediaType mediaType, WriteCallback writeCallback, ServerHttpRequest request, HttpHeaders headers) throws IOException {
// 获取token
String token = generateToken();
// 将token添加到headers的"Authorization"字段,或者一个新的定制头如"x-token"
headers.add("x-token", token);
return body;
}
}
```
记得在配置`@RestControllerAdvice`或`WebMvcConfigurer`来启用这个自定义的response advice。
spring boot重定向添加请求头
在Spring Boot中,可以使用RedirectView或重定向方法来实现重定向并添加请求头。以下是两个简单的示例:
1. 使用RedirectView
```
@GetMapping("/redirect-with-header")
public RedirectView redirectWithHeader() {
RedirectView redirectView = new RedirectView();
redirectView.setUrl("http://www.example.com/");
redirectView.setExposeModelAttributes(false);
redirectView.addStaticAttribute("headerName", "headerValue");
return redirectView;
}
```
在上面的示例中,首先创建一个RedirectView实例,并设置要重定向到的URL。然后,可以使用addStaticAttribute方法向重定向请求中添加请求头。这里将添加一个名为“headerName”的请求头,值为“headerValue”。
2. 使用重定向方法
```
@GetMapping("/redirect-with-header")
public ResponseEntity<Void> redirectWithHeader() {
HttpHeaders headers = new HttpHeaders();
headers.add("headerName", "headerValue");
return ResponseEntity.status(HttpStatus.FOUND)
.headers(headers)
.location(URI.create("http://www.example.com/"))
.build();
}
```
在上面的示例中,首先创建一个HttpHeaders实例,并添加一个名为“headerName”的请求头,值为“headerValue”。然后,使用ResponseEntity构建器返回一个HTTP 302(FOUND)响应,并将请求头和重定向目标URL(使用URI.create方法创建)添加到响应中。
注意:使用RedirectView或重定向方法都可以实现重定向并添加请求头,具体取决于实际需求和个人偏好。
阅读全文