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

时间:2020-07-20 15:54:43

标签: azure-functions uno-platform webassembly

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

{
  "Values": {

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

我仍然遇到相同的问题。这不是HTTP调用,因为它可以在UNO的其他平台上使用。

任何人都知道发生了什么事吗?

1 个答案:

答案 0 :(得分:3)

问题

这就是CORS机制的魔术。该呼叫称为 CORS预检,用于与服务器核对该呼叫是否由服务器授权。

为什么您有CORS问题

由于WebAssembly(WASM)应用程序正在浏览器中运行,因此它们无法逃脱浏览器中存在的所有安全系统。 Http调用实际上是由浏览器使用WasmHttpHandler的{​​{3}}完成的。

大多数情况下,这是在您使用与应用程序不同的主机名进行调用时发生的。假设您在https://mybikeisyellow.app/上部署了Wasm应用程序,并对https://myneightborbikeisred.biz进行了 REST 调用,浏览器将首先对OPTIONS进行https://myneightborbikeisred.biz调用允许在此进行任何其他非GET的呼叫。

有关CORS的更多信息

您可以在Internet上搜索有关CORS的信息,其中有很多非常有用的信息,说明了为什么存在它以及如何管理它。我发现fetch api做得很好。

如何解决您的问题

针对Azure功能中的特定问题,请遵循this one,您将使它能够接受您的请求。