springboot 跨域 session+cookie失效问题
时间: 2023-08-29 16:03:13 浏览: 74
Spring Boot 跨域和 Session Cookie失效问题的解决方法如下:
首先,跨域问题可以通过配置Spring Boot的CORS(跨源资源共享)来解决。在Spring Boot中,可以使用注解 `@CrossOrigin` 或在配置类中添加 `addCorsMappings` 方法来配置跨域的访问。
@CrossOrigin 注解可以应用在控制器类或方法上,指定允许跨域的来源、方法、头部、是否允许携带凭证(比如 Cookie)等参数。例如:
```java
@CrossOrigin(origins = "http://localhost:8080", maxAge = 3600, allowCredentials = "true")
@GetMapping("/example")
public ResponseEntity<String> getExample() {
// ...
}
```
另一种配置跨域的方法是创建配置类,并继承 `WebMvcConfigurer` 接口,并重写其 `addCorsMappings` 方法。例如:
```java
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOrigins("http://localhost:8080")
.allowedMethods("GET", "POST")
.allowCredentials(true)
.maxAge(3600);
}
}
```
其次,Session Cookie失效问题可以通过在跨域请求中添加凭证(Credentials)来解决。具体来说,可以将 `allowCredentials` 参数设置为 `true`,同时在请求头中添加 `withCredentials: true`。例如:
```javascript
fetch('http://localhost:8080/api/example', {
method: 'GET',
credentials: 'include' // 或 'same-origin'
})
```
这样配置后,Spring Boot就可以正常接收带有 Cookie 的跨域请求,并在服务端保持 Session 的有效性。
综上所述,通过配置跨域设置和同时在请求中添加凭证,可以解决Spring Boot跨域和Session Cookie失效的问题。