返回

Google Apps Script 中的 doGet() 函数处理 POST 请求解决 CORS 阻止错误

javascript

在 Google Apps Script 中使用 doGet() 入口点处理 POST 请求

简介

本文将指导你如何在 Google Apps Script 中使用 doGet() 入口点来处理 POST 请求。这解决了开发人员在使用 fetch() 发送 POST 请求到他们的 Web 应用程序的开发版本时遇到的 CORS 阻止错误。

问题

当你向你的 Google Apps Script Web 应用程序的开发版本发送 POST 请求时,你可能会遇到以下错误:

对 'https://script.google.com/macros/s/~MyScriptID~/exec' 的获取请求因 CORS 策略被阻止:预检请求的响应未通过访问控制检查:所请求资源上不存在 'Access-Control-Allow-Origin' 标头。如果一个不透明响应满足你的需求,将请求的模式设置为 'no-cors' 以禁用 CORS 提取资源。

解决方案

要解决此错误,你需要采取以下步骤:

  1. 使用 doGet() 函数:

    确保你的 Google Apps Script 包含 doGet() 函数,而不是 doPost() 函数。doGet() 函数用于响应 GET 请求,而不是 POST 请求。

  2. 添加 CORS 标头:

    在你的 doGet() 函数中添加以下行以允许跨源资源共享 (CORS):

    response.setHeader("Access-Control-Allow-Origin", "*");
    
  3. 部署脚本:

    部署你的脚本为 Web 应用程序,确保部署 URL 与你发送 POST 请求的 URL 相同。

  4. 验证 JSON 数据:

    确保你正在发送正确的 JSON 数据。你的 JSON 数据应类似于:

    {
      "firstname": "John",
      "lastname": "Doe"
    }
    
  5. 检查脚本日志:

    检查 Google Cloud Platform 控制台中的脚本日志,以查看是否有任何错误消息。

其他提示

  • 避免使用 HTML 格式,因为它会导致脚本无法部署。
  • 确认 Google Apps Script API 已启用。
  • 确保你的脚本已获得访问你正在请求的数据的必要权限。

结论

通过遵循这些步骤,你可以解决在使用 Google Apps Script 时遇到的 CORS 阻止错误。

常见问题解答

  1. 为什么我会收到 CORS 阻止错误?

    CORS 错误是由浏览器强制实施的安全策略引起的,该策略限制脚本跨不同域和端口访问资源。

  2. 如何禁用 CORS?

    你不应该禁用 CORS。CORS 是一个重要的安全功能,有助于防止恶意脚本访问敏感数据。

  3. 我可以使用其他方法来处理 POST 请求吗?

    除了 doGet() 函数,你还可以使用 doPost() 函数或 Cloud Functions 来处理 POST 请求。

  4. 我的脚本已部署,但仍然收到错误。

    检查你的脚本日志,查看是否有任何错误消息。你还需要确保你的脚本已获得访问你正在请求的数据的必要权限。

  5. 如何确保我的脚本安全?

    采取以下步骤来确保你的脚本安全:

    • 使用 OAuth2 身份验证。
    • 对所有输入数据进行验证。
    • 避免使用内联 HTML 或 JavaScript。
    • 定期审查和更新你的脚本。