预期的 CORS 设置为:https://*.officescripts.microsoftusercontent.com
.
但是,Azure Functions CORS 目前不支持通配符子域。如果您尝试使用通配符子域设置来源,您将收到以下错误:
一种可能的解决方法是在 Azure Functions 代码中显式维护“允许列表”。这是一个概念验证实现(假设您将 node.js 用于您的 Azure Functions):
module.exports = async function (context, req) {
// List your allowed hosts here. Escape special characters for the regular expressions.
const allowedHosts = [
/https\:\/\/www\.myserver\.com/,
/https\:\/\/[^\.]+\.officescripts\.microsoftusercontent\.com/
];
if (!allowedHosts.some(host => host.test(req.headers.origin))) {
context.res = {
status: 403, /* Forbidden */
body: "Not allowed!"
};
return;
}
// Handle the normal request and generate the expected response.
context.res = {
status: 200,
body: "Allowed!"
};
}
请注意:
- 需要正则表达式来匹配动态子域。
- 为了在代码中进行来源检查,您需要在函数 CORS 设置页面上进行设置
*
。Allowed Origins
或者,如果您想使用 ASP.NET Core 构建您的服务,您可以执行以下操作:https ://stackoverflow.com/a/49943569/6656547 。