在我的 UNO WASM 项目中,HTTP POST 调用成为我本地 Azure Functions 上的 HTTP OPTIONS

In my UNO WASM project HTTP POST calls become HTTP OPTIONS on my local Azure Functions

我的 HTTP Post 调用按我的 UWP 和 Droid 项目的预期工作,但是当我从我的 WASM 项目进行相同的调用时,Azure Functions 将调用视为选项而不是 POST。我读到这是一个 CORS 问题,我需要将 local.settings.json 文件添加到我的 Azure Functions 项目。现在看起来像这样:

{
  "Values": {

  },
  "Host": {
    "CORS": "*"
  }
}

我仍然遇到同样的问题。这不是 HTTP 调用,因为它适用于 UNO 中的其他平台。

有人知道发生了什么事吗?

问题

这就是 CORS 机制的 魔力 。此调用称为 CORS 预检,用于检查服务器是否授权调用。

为什么你有 CORS 问题

由于 WebAssembly (WASM) 应用程序 运行 在浏览器中,它们无法逃脱浏览器中存在的所有安全系统。 Http 调用实际上是由 WasmHttpHandler.

使用 fetch api 的浏览器完成的

大多数时候,当您在与您的应用程序不同的主机名上进行调用时,就会发生这种情况。假设您在 https://mybikeisyellow.app/ 上部署 Wasm 应用程序并对 https://myneightborbikeisred.biz 进行 REST 调用,浏览器将首先对 https://myneightborbikeisred.biz 进行 OPTIONS 调用=] 在允许在那里进行任何其他非 GET 调用之前。

关于 CORS 的更多信息

您可以在 Internet 上搜索有关 CORS 的信息,其中有很多非常有用的信息,说明它存在的原因以及如何管理它。我发现 this one 做得很好。

如何解决你的问题

对于您在 Azure Fuctions 中的特定问题,请按照 this guide 进行操作,您将能够使其接受您的请求。