URLSession 如何查看请求发送时携带了哪些 Cookie?
以下方案均无需借助外部流量嗅探工具,可直接通过代码或本地服务完成验证:
1. 拦截请求发送流程,直接读取待发送的请求头
这是最直接的验证方式,在网络库的请求回调/拦截器中,拿到即将发出的原始请求,直接读取Cookie头即可确认内容:
- iOS/macOS 平台(URLSession 体系):实现
URLSessionTaskDelegate的willSendRequest代理方法:
func urlSession(_ session: URLSession, task: URLSessionTask, willSendRequest request: URLRequest, completionHandler: @escaping (URLRequest?) -> Void) { // 直接读取请求中已拼接好的Cookie头 let carriedCookies = request.allHTTPHeaderFields?["Cookie"] print("待发送请求携带的Cookie:\(carriedCookies ?? "无")") // 此处可添加逻辑匹配你要验证的特定Cookie值是否存在 completionHandler(request) }
- Android 平台(OkHttp 体系):添加自定义拦截器获取待发请求:
val cookieCheckInterceptor = Interceptor { chain -> val request = chain.request() val carriedCookies = request.header("Cookie") Log.d("Cookie验证", "待发送请求携带的Cookie:$carriedCookies") chain.proceed(request) } // 构建OkHttpClient时注入拦截器即可全局生效 val okHttpClient = OkHttpClient.Builder() .addInterceptor(cookieCheckInterceptor) .build()
- 前端/Node.js 环境:重写原生网络请求方法注入校验逻辑:
// 重写fetch方法示例 const originFetch = window.fetch; window.fetch = function (...args) { const [, config = {}] = args; const carriedCookies = config.headers?.Cookie || document.cookie; console.log("待发送请求携带的Cookie:", carriedCookies); return originFetch.apply(this, args); }
2. 本地启动回显服务,校验服务端实际收到的Cookie
在本地启动极简HTTP服务,将收到的所有请求头原样返回,向本地地址发请求后从响应内容中直接读取服务端收到的Cookie字段即可:
- 可以通过Python一行命令快速搭建回显服务:
python3 -c "from http.server import HTTPServer, BaseHTTPRequestHandler; class Handler(BaseHTTPRequestHandler): def do_GET(self): self.send_response(200); self.end_headers(); self.wfile.write(str(self.headers).encode()) ; HTTPServer(('127.0.0.1', 8888), Handler).serve_forever()"
启动后向http://127.0.0.1:8888发起请求,响应内容就是服务端收到的全部请求头,直接查找Cookie项即可完成验证。
3. 基于Cookie规范做预校验
符合RFC 6265标准的Cookie管理模块,都会严格按照Cookie属性判断是否要在请求中携带对应Cookie,你可以直接从HTTPCookieStorage取出目标Cookie,逐一匹配以下规则,全部符合则一定会被自动携带:
- Cookie的
domain属性与请求域名匹配(支持父域名匹配规则) - Cookie的
path属性是请求路径的父路径 - 若Cookie标记
Secure属性,请求必须为HTTPS协议 - 若Cookie设置了
SameSite限制,请求符合跨站规则要求 - Cookie未过期,也未被标记为删除
内容的提问来源于stack exchange,提问作者Isaaс Weisberg
相关产品推荐
相关产品推荐

