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

如何在Google Apps Script WebApp的doGet(e)中获取请求的Cookie?

如何在Google Apps Script WebApp的doGet(e)中获取请求的Cookie?

我太懂你这种困惑了——之前我也试过直接打印doGet(e)里的e对象,结果啥Cookie信息都看不到,一度以为Google Apps Script根本不支持获取Cookie!其实是我们找错地方了,e对象本身确实不会暴露请求头和Cookie这些内容,得用另一个方法才行。

解决方法:用ScriptApp.getRequest()获取完整请求信息

Google Apps Script提供了ScriptApp.getRequest()方法,它能返回包含所有请求细节的对象,其中就包括我们要的请求头(自然也包含Cookie)。

直接给你改好的测试代码,替换掉你原来的doGet函数就行:

function doGet(e) {
  // 获取完整的请求对象
  const fullRequest = ScriptApp.getRequest();
  // 从请求头里取出Cookie字符串
  const cookieHeader = fullRequest.headers.Cookie;
  
  // 如果需要把Cookie字符串解析成键值对,还可以加个小函数
  function parseCookieString(cookieStr) {
    if (!cookieStr) return {};
    return cookieStr.split(';').reduce((result, cookie) => {
      const [key, value] = cookie.trim().split('=');
      result[key] = value;
      return result;
    }, {});
  }

  const parsedCookies = parseCookieString(cookieHeader);

  // 返回结果看看
  return ContentService.createTextOutput(JSON.stringify({
    rawCookie: cookieHeader,
    parsedCookies: parsedCookies,
    allRequestHeaders: fullRequest.headers
  })).setMimeType(ContentService.MimeType.JSON);
}

测试一下

你再用之前的curl命令测试:

curl -L --cookie "name=Jane;age=25" "$webapp_endpoint"

这次返回的结果里,就能看到rawCookie和解析后的parsedCookies了!

注意事项

  • 不管你是用curl --cookie还是浏览器fetch发送的请求,只要请求里带了Cookie,fullRequest.headers.Cookie都能拿到,包括HttpOnly Cookie(毕竟HttpOnly只是限制前端JS读取,不影响请求自动带上Cookie,服务端也能正常接收)。
  • 部署Web App的时候,不用特意改什么权限设置,只要你的请求能正常访问到Web App,这个方法就管用。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 08:58:04