在浏览器中,发送请求是否携带 Cookie 取决于请求的类型以及请求的配置。以下是一些常见的情况:
- 同源请求: 如果请求的目标与当前页面的域名相同,浏览器通常会自动在请求中携带当前页面对应域的 Cookie。
- 跨域请求:
-
- 简单请求: 如果是简单请求(例如使用 GET 或 POST 方法,并且没有自定义头部),浏览器会自动在请求中携带当前页面对应域的 Cookie。
- 非简单请求(预检请求): 如果是非简单请求(例如使用特殊头部、复杂方法等),浏览器会先发送一个预检请求(OPTIONS 请求),如果服务器允许,浏览器才会发送实际请求,并在实际请求中携带 Cookie。
- 脚本发起的请求: 通过 JavaScript 使用
XMLHttpRequest
或fetch
等 API 发起的请求,浏览器会默认在请求中携带当前页面对应域的 Cookie。 - 图像、样式、脚本等资源的请求: 通常这些资源的请求不会携带 Cookie。但如果服务器设置了允许资源请求携带 Cookie,可以在服务器端配置
Access-Control-Allow-Credentials: true
。
要注意的是,安全性方面的考虑,服务器端需要设置适当的 SameSite
属性来控制 Cookie 的发送,以防止跨站点请求伪造(CSRF)攻击。