我的 HTTP Post 调用在我的 UWP 和 Droid 项目中按预期工作,但是当我从我的 WASM 项目中进行相同的调用时,Azure Functions 将调用视为 OPTIONS 而不是 POST。我读到这是一个 CORS 问题,我需要将 local.settings.json 文件添加到我的 Azure Functions 项目中。现在看起来像这样:
{
"Values": {
},
"Host": {
"CORS": "*"
}
}
我仍然遇到同样的问题。这不是 HTTP 调用,因为它可以在 UNO 中的其他平台上运行。有谁知道这是怎么回事?
最佳答案
问题
这就是 CORS 机制的神奇之处。这个电话被称为 CORS 预检 用于与服务器核对调用是否经过服务器授权。
为什么你有 CORS 问题
由于 WebAssembly (WASM) 应用程序在浏览器中运行,因此它们无法摆脱浏览器中存在的所有安全系统。 Http 调用实际上是由浏览器使用 fetch
api 完成的由 WasmHttpHandler
.
大多数情况下,当您使用与应用程序不同的主机名进行调用时,就会发生这种情况。假设您在 https://mybikeisyellow.app/
上部署了 Wasm 应用程序并对 https://myneightborbikeisred.biz
进行 REST 调用,浏览器会先生成一个 OPTIONS
调用 https://myneightborbikeisred.biz
在允许任何其他非 GET
之前在那里打电话。
更多关于 CORS
您可以在 Internet 上搜索有关 CORS 的信息,这里有很多关于它为何存在以及如何管理它的非常有用的信息。我找到了 this one做得很好。
如何解决您的问题
针对您的具体问题 在 Azure Fuctions 中,关注 this guide你就可以让它接受你的请求。
关于azure-functions - 在我的 UNO WASM 项目中,HTTP POST 调用在我的本地 Azure Functions 上变成了 HTTP OPTIONS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62999277/