java 跨域 cookie_跨域请求传递Cookie问题
时间: 2023-07-11 09:59:53 浏览: 87
当浏览器发送跨域请求时,如果要携带 Cookie,需要满足以下两个条件:
1. 在请求头中设置 withCredentials 字段为 true;
2. 服务器端在响应头中设置 Access-Control-Allow-Origin 字段为具体的来源域名(不能使用通配符 *)。同时,还需要设置 Access-Control-Allow-Credentials 字段为 true,表示允许携带 Cookie。
以下是一个 Java 后端的示例代码:
```
@RequestMapping("/api")
public void api(HttpServletRequest request, HttpServletResponse response) {
// 设置允许跨域访问的域名
response.setHeader("Access-Control-Allow-Origin", "http://www.example.com");
// 允许携带 Cookie
response.setHeader("Access-Control-Allow-Credentials", "true");
// 获取请求头中的 Cookie
String cookie = request.getHeader("Cookie");
// 处理业务逻辑
// ...
}
```
需要注意的是,如果使用 Spring Security 等安全框架,还需要在配置中添加对跨域请求的支持。例如,在 Spring Security 中,可以添加如下配置:
```
http
.cors()
.and()
.csrf().disable()
.authorizeRequests()
.anyRequest().permitAll();
```
阅读全文