为 Azure Functions 本地主机配置 CORS
Posted
技术标签:
【中文标题】为 Azure Functions 本地主机配置 CORS【英文标题】:Configure CORS for Azure Functions Local Host 【发布时间】:2017-07-11 18:20:42 【问题描述】:我正在使用 Azure Functions CLI 工具在本地测试 Azure Functions 应用。有什么方法可以为本地主机配置 CORS 设置?
【问题讨论】:
本地实例是否不会公开与docs.microsoft.com/en-us/azure/azure-functions/… 记录的相同设置 UI? 不,您只是托管运行时,而不是门户 我对架构完全不熟悉,但你知道,跨域/CORS 限制被强制执行的唯一地方是浏览器,在浏览器中运行的 Web 应用程序上,对吧?因此,如果应用程序在其中执行的这个运行时在浏览器之外,那么我认为没有什么能阻止在其中运行的应用程序对您希望它们发出的任何 Web URL 发出编程请求。所以我想我对什么不起作用以及您可能遇到的具体错误感到困惑。 是的,我的用例有点不寻常。它从浏览器运行一些 javascript 测试,自动调用我的 API。所以浏览器正在调用 localhost,但由于 CORS 而失败。 啊,好的,本地主机上的Web服务器必须有一些配置文件吗?或者你可以编辑它的一些来源,然后从中重建它?或者它只是一个你没有源代码的二进制文件?无论如何,在最简单的级别上,如果您可以访问配置或源以使其发送Access-Control-Allow-Origin: *
响应标头,那么浏览器将允许您的 JavaScript 测试按预期工作。 (现在也很想知道它实际上在 localhost...IIS 上运行的 Web 服务器?)
【参考方案1】:
您可以在local settings filelocal.settings.json
中配置CORS:
"Values":
,
"Host":
"CORS": "*"
local.settings.json
文件中的设置仅在您 在本地运行项目
【讨论】:
如果您只想允许单个域,请务必不要在末尾添加/
。所以http://localhost:4200/
不起作用,但http://localhost:4200
用作CORS
的值。【参考方案2】:
你可以这样启动主机
func host start --cors *
您还可以更具体,并提供一个逗号分隔的允许 url 列表
更多:https://github.com/Azure/azure-webjobs-sdk-script/issues/1012
【讨论】:
对我来说,将, "Host": "LocalHttpPort": 7071, "CORS": "*"
添加到 local.settings.json
更容易(有人在已删除此 Q 的答案中建议)
是的,根据上述更改 local.settings.json
为我解决了问题(Windows 8.1,VS Code)。有人知道为什么必须在local.settings.json
中吗?我已经在host.json
中进行了相同的设置,但是在本地开发时似乎不起作用。【参考方案3】:
在 Azure Functions 上配置 CORS 的另一种简单方法是使用 Azure 门户,
1- 转到 Azure 门户中的功能应用设置
2 - 点击 CORS 并添加您的本地主机 url
你有它!
希望这对某人有所帮助。
【讨论】:
这些问题是针对本地开发的,而不是 Azure 上的。 有没有办法在代码中进行配置,而不必通过 azure web 门户进行配置?【参考方案4】:如果您在通过 Visual Studio 的调试的“应用程序参数”传递参数时遇到问题。这是从命令行传递参数的方法:
1) 打开一个普通的命令提示符。
2) cd 到您的解决方案的已编译 dll,即“您的解决方案路径”\bin\Debug\netstandard2.0
3) 从命令行启动 Azure 函数运行时,即:
dotnet "C:\Users\USER\AppData\Local\Azure.Functions.V2.Cli\func.dll" host start --port 7071 --cors * --pause-on-error
4) 在 Visual Studio 中调试,Debug->Attach to Process.. 并附加到将要运行的 donet.exe。
希望这有助于防止有人过度敲打他们的头......
【讨论】:
以上是关于为 Azure Functions 本地主机配置 CORS的主要内容,如果未能解决你的问题,请参考以下文章
如何配置我的 Azure Functions 环境,以便可以在 Python 代码中使用 Cosmos DB 客户端?
Azure Functions C# 预编译的本地发布错误 OutputPath 未设置
Azure Functions 未在本地创建 Azure 表列