网络与安全 · 单选题 · 第 31 题
前端与全栈开发面试 · 第 31 题
前端跨域请求需要携带 Cookie(fetch 设置 credentials: 'include'),服务端应当怎么配合?
- AAllow-Origin 回显具体的源而不是 *,并返回 Access-Control-Allow-Credentials: true
- BAccess-Control-Allow-Origin 设置为 * 就足够了,其他什么都不用改,Cookie 就能带上
- C只要前端设置了 credentials: 'include' 就行,服务端不需要返回任何 CORS 相关的响应头
- D服务端把 Cookie 的值改为放在 URL 的查询参数里返回,浏览器会自动把它转换为 Cookie
答案
A A. Allow-Origin 回显具体的源而不是 *,并返回 Access-Control-Allow-Credentials: true
解析
带凭证的请求中,浏览器拒绝 Allow-Origin 为通配符 * 的响应,必须回显具体的源,通常还要加上 Vary: Origin。Cookie 本身还要满足 SameSite 策略,跨站发送需要 SameSite=None; Secure。把会话标识放进 URL 容易被日志和 Referer 泄露,不可取。另外部分浏览器默认拦截第三方 Cookie,跨站场景更推荐同站部署或 Token 方案。