You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置cookieAcceptPolicy为.never后,setCookie仍能写入Cookie的疑问

为什么设置HTTPCookieStorage.cookieAcceptPolicy = .never后,setCookie(_:)仍能写入Cookie?

其实这是个很容易踩的小坑——cookieAcceptPolicy这个属性的作用范围并没有你想的那么广:它只控制系统自动从网络请求的响应中接收Cookie的行为,完全不限制开发者手动调用setCookie(_:)方法添加Cookie的操作。

具体来说:

  • 当你把策略设为.never时,系统会拒绝自动存储来自HTTP/HTTPS响应里的Cookie,但这并不影响你主动通过代码把Cookie塞进存储里——毕竟这是你明确发起的操作,不属于“自动接收”的范畴。
  • 看你的测试代码,你是手动创建了HTTPCookie实例,然后主动调用setCookie(_:)写入,这个动作是绕过cookieAcceptPolicy限制的,因为它是开发者主动触发的,不是系统自动处理的网络响应Cookie。

如果你的需求是完全禁止任何Cookie写入(包括手动操作),那你需要自己额外做校验逻辑——比如在调用setCookie(_:)前先检查当前的策略,或者干脆封装一层自己的Cookie存储逻辑,替代系统的HTTPCookieStorage。

你的测试代码示例:

let someCookie = HTTPCookie(properties: [ .name: "cookie", .value: "value", .path: "/", .domain: "domain.com", .expires: Date(timeIntervalSinceNow: 60) ])!
let storage = HTTPCookieStorage.shared
storage.cookieAcceptPolicy = .never
print(storage.cookies?.count) // 0
storage.setCookie(someCookie)
print(storage.cookies?.count) // 1

内容的提问来源于stack exchange,提问作者Daniil Subbotin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:35:22