为什么我在向 Google Apps 脚本发送 POST 请求时会收到随机的成功和失败响应?

问题描述 投票:0回答:1

客户端 JavaScript(API 处理程序):

async function API_HANDLER(request) {
  try {
    const url = "my script id"; // Replace with your actual URL

    IsLoading(true); // Start loading

    const fetchOptions = {
      redirect: "follow",
      method: "POST",
      headers: {
        "Content-Type": "text/plain;charset=utf-8", // Sending as text
      },
      body: JSON.stringify(request),
    };

    const response = await fetch(url, fetchOptions);

    if (response === undefined) {
      SHOW_ERROR_POPUP(error.message);
    }
    const data = await response.json();
    IsLoading(false); // Stop loading

    if (data?.status) {
      return data; // Resolve the data to be used by the caller
    } else {
      console.log("Error - ", data);
      SHOW_ERROR_POPUP(
        "Something went wrong, please contact any NKD Servants."
      );
    }
  } catch (error) {
    IsLoading(false); // Stop loading on error
    console.log(error);
    SHOW_ERROR_POPUP(error.message);
  } finally {
    IsLoading(false); // Stop loading regardless of success or error
  }
}

服务器端 Google Apps 脚本 (doPost):

function doPost(e) {
  // Handle CORS preflight request (OPTIONS)
  if (e.postData.type === 'OPTIONS') {
    return ContentService.createTextOutput()
      .setMimeType(ContentService.MimeType.TEXT);
  }

  var data = JSON.parse(e.postData.contents);

  // Process and return response
  var response = {
    status: "success", // or other status depending on your logic
    message: "Request processed successfully"
  };

  return ContentService.createTextOutput(JSON.stringify(response))
    .setMimeType(ContentService.MimeType.JSON);
}

问题:

  • 有时请求成功,我会从服务器得到预期的响应。
  • 其他时候,请求失败,我没有得到预期的响应。

我尝试过的:

我已验证我的 Google Apps 脚本 doPost() 方法是否正确处理 POST 请求并使用有效的 JSON 对象进行响应。

由于上述问题无法修复此问题

我需要一些解决方案来修复此 cors 错误并通过 google 应用脚本成功调用 post api

你能分享一些建议吗? 我正在从客户端 JavaScript 向 Google Apps 脚本端点发出异步 POST 请求,但得到的结果不一致。有时请求成功,我从服务器得到预期的响应。然而,在其他时候,请求失败,我没有得到预期的响应。

这里概述了我发出 API 请求的客户端代码,后面是服务器端 Google Apps 脚本(doPost 方法)代码。

google-apps-script web-applications cors
1个回答
0
投票

根据 https://developers.google.com/apps-script/guides/web

e.postData.type
返回帖子正文的 MIME 类型。
OPTIONS
不属于 https://developer.mozilla.org/en-US/docs/Web/HTTP/MIME_types/Common_types 中列出的 MIME 类型。要了解有关 MIME 类型的更多信息,请阅读 https://developer.mozilla.org/en-US/docs/Web/HTTP/MIME_types 以及其他来源。

© www.soinside.com 2019 - 2024. All rights reserved.