如何在Google Apps Script的doGet()中获取Web Apps请求头?
在Google Apps Script Web Apps中获取请求头
你说得对,默认的doGet(e)参数e确实不包含请求头信息——它只负责传递请求参数、查询字符串这类基础请求内容。要拿到请求头,得借助Google Apps Script提供的请求上下文API来获取完整的请求细节。
解决方案代码示例
修改你的doGet函数,加入获取请求头的逻辑:
function doGet(e) { // 获取当前Web Apps请求的上下文对象 const requestContext = ScriptApp.getService().getCurrentContext(); // 从上下文中提取请求头信息 const requestHeaders = requestContext.getRequest().headers; // 打印请求头到日志方便查看 console.log("请求头详情:", requestHeaders); // 也可以把请求头返回给客户端,直观看到结果 return ContentService.createTextOutput(JSON.stringify(requestHeaders)); }
关键说明
ScriptApp.getService().getCurrentContext():这个方法能拿到当前请求的完整上下文,里面包含了请求头、请求方法、客户端IP等你需要的细节,是获取请求头的核心。- 适配你的部署配置:因为你设置了**执行身份为“我本人”**且允许匿名访问,这种情况下依然能获取到大部分标准请求头(比如
User-Agent、Accept、Host等),但和用户身份绑定的特殊头(如Authorization)会被过滤,毕竟是匿名访问场景。
测试小技巧
部署修改后的Web Apps后,你可以用curl工具发送带自定义头的请求来验证:
curl -H "X-My-Custom-Header: TestValue123" "https://script.google.com/macros/s/你的部署ID/exec?key=value"
然后去脚本编辑器的「查看」→「日志」里,就能看到包含自定义头在内的所有请求头信息了。
内容的提问来源于stack exchange,提问作者Elsa
相关产品推荐
相关产品推荐

