我的HTTP Post调用可以在UWP和Droid项目中按预期工作,但是当我从WASM项目中进行相同的调用时,Azure Functions将调用视为OPTIONS而不是POST。我读到这是一个CORS问题,我需要向我的Azure Functions项目添加一个local.settings.json文件。现在看起来像这样:
{
"Values": {
},
"Host": {
"CORS": "*"
}
}
我仍然遇到相同的问题。这不是HTTP调用,因为它可以在UNO的其他平台上使用。
任何人都知道发生了什么事吗?
答案 0 :(得分:3)
这就是CORS机制的魔术。该呼叫称为 CORS预检,用于与服务器核对该呼叫是否由服务器授权。
由于WebAssembly(WASM)应用程序正在浏览器中运行,因此它们无法逃脱浏览器中存在的所有安全系统。 Http调用实际上是由浏览器使用WasmHttpHandler
的{{3}}完成的。
大多数情况下,这是在您使用与应用程序不同的主机名进行调用时发生的。假设您在https://mybikeisyellow.app/
上部署了Wasm应用程序,并对https://myneightborbikeisred.biz
进行了 REST 调用,浏览器将首先对OPTIONS
进行https://myneightborbikeisred.biz
调用允许在此进行任何其他非GET
的呼叫。
您可以在Internet上搜索有关CORS的信息,其中有很多非常有用的信息,说明了为什么存在它以及如何管理它。我发现fetch
api做得很好。
针对Azure功能中的特定问题,请遵循this one,您将使它能够接受您的请求。