我在 Google Cloud Functions 上有一个功能,我试图在我的 Flutter Web 应用程序中发出发布请求。我在 Python 中测试了一个 post 请求,它适用于以下请求:
params = {'input_key':'input_value'}
headers = {"Content-Type": "application/json"}
r = requests.post("https://us-central1-lucid-bond-261904.cloudfunctions.net/cloudFunction", data=jason.dumps(params), headers=headers)
但是,当我尝试使用 http 包从 Flutter Web 应用程序发出相同的请求时,我不断收到 XMLHttpRequest 错误。这是我在颤振网络应用程序中的 http 请求
String path = "https://us-central1-lucid-bond-261904.cloudfunctions.net/cloudFunction";
Map params = {'input_key':'input_value'}
var response = await http.post(path, body: json.encode(params), headers: <String, String>{'Content-Type': 'application/json'});
我知道它成功触发了云功能,因为我有云功能做的第一件事就是在日志中打印“你好”。我选择内容类型的方式似乎可能是一个错误。我读到这个帖子暗示内容类型可能会更改为“application/json; charset=utf-8”,但他们指定的修复不适用于 Flutter Web,因为 dart io 包不起作用颤振网络。那么如何正确指定内容类型呢?或者是否有更好的颤振包用于这种情况?
Flutter 中抛出的错误是:
Error: XMLHttpRequest error.
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 264:20 get current
packages/http/src/browser_client.dart 84:22
我的云函数中的错误
line 99, in cloudFunction shop_name = inputs_dict['input_key'] TypeError: 'NoneType' object is not subscriptable
编辑:刚刚尝试从邮递员发出相同的发布请求,并且成功。尽管如此,我的颤振应用程序仍然无法正常工作。我是否需要在 Google Cloud Function 中启用 CORS 或其他功能?