ESP32运行NodeMCU对接Google日历调用Google Script返回404求助
问题根因
- Google Apps Script公开访问接口默认会返回302临时重定向,将请求转发到script.googleusercontent.com域名下返回实际响应
- NodeMCU的http库默认不开启自动重定向跟随,且你手动写死了
Host请求头为script.google.com,重定向到新域名后Host头不匹配,触发404错误 - 上传数据成功是因为Google Script在返回302之前就已经执行了对应业务逻辑,所以数据写入操作正常完成,但你没有正确获取重定向后的返回内容
解决方案
- 移除手动设置的
Host请求头,由http库自动根据当前请求域名生成对应Host值 - 开启http请求的自动重定向跟随,NodeMCU http库支持通过
follow_redirects参数配置,最大重定向次数建议设为5,适配Google服务的多次跳转逻辑 - 清理不必要的请求头,避免触发Google服务的安全拦截
修改后代码示例
headers = { ["Content-Type"] = "application/json", ["Accept"] = "application/json, text/plain, */*" } -- 创建连接时开启重定向跟随 connection = http.createConnection("https://script.google.com/macros/s/AKfycbybO_1kyXTxTOAJ8d4X0niOs-7y58TIfBhD92ThMuh8GJ/exec", http.GET, { headers = headers, follow_redirects = 5 -- 开启最多5次自动重定向 }) connection:on("data", function(status,data) print("data =", status, data) end) connection:request()
补充:请确认Google Script部署时的访问权限配置为「所有人(包括匿名用户)」,否则未携带认证信息的请求会被拦截。
内容的提问来源于stack exchange,提问作者Abhi
相关产品推荐
相关产品推荐

