【问题标题】:How to add custom http header in response from Azure function如何添加自定义 http 标头以响应 Azure 函数
【发布时间】:2016-08-29 21:28:42
【问题描述】:

我正在尝试使用来自客户端 javascript 应用程序的 google 身份验证的 azure 函数 (nodejs)。我已经为正确的 URL(即http://localhost:8080)设置了 CORS。但我仍然收到以下错误:

Credentials 标志为“true”,但“Access-Control-Allow-Credentials” 标题是''。必须为“true”才能允许凭据。起源 'http://localhost:8080' 因此不允许访问。

我在互联网上到处尝试过,并花了几天时间自己得到答案。似乎 Azure http 响应需要在标头中添加此 Access-Control-Allow-Credentials:true 。有没有办法添加自定义标题?

任何帮助将不胜感激。

【问题讨论】:

  • 你在用 nodejs 吗?
  • @Thomas,是的,nodejs 在服务器端,javascript fetch 在客户端。

标签: javascript node.js http-headers azure-functions


【解决方案1】:

在 Node 函数中,您可以按如下方式指定附加标头:

module.exports = function (context, req) {
    context.res = {
        status: 200,
        body: "Hello " + req.query.name,
        headers: {
            'Content-Type': 'text/plain',
            'MyCustomHeader': 'Testing'
        }
    };
    context.done();
}

【讨论】:

  • 在这种情况下可能没有帮助,我认为这个错误是预检 http OPTIONS,这意味着你的函数不会被调用。
  • 是的,我在预检中遇到了这个错误,所以我的函数没有机会。它由 azure 基础架构处理。请帮帮我,我真的卡住了。
  • @SofaGum,你是如何配置 CORS 的?来自天蓝色的门户?
  • 这应该是顶级的!!
【解决方案2】:

我终于设法解决了这个问题。诀窍是从 Azure Functions 应用程序中删除所有 CORS 条目并直接在您的代码中处理它。

感谢另一个 stackoverflow issue 分享的关于 azure 应用服务的提示,该服务也适用于 azure 功能。

有关变通方法的更多详细信息,请参见:

github issue #620

【讨论】:

  • 我没有看到想要的行为。当我删除应用程序设置中的所有 CORS 条目时,我可以在我的 Azure Functions 代码中成功地将“Access-Control-Allow-Credentials”标头设置为“true”。但是,在这种情况下,“Access-Control-Allow-Origin”标头会被清除。如果我改用应用程序设置中的 CORS 设置,我可以正确设置 Access-Control-Allow-Origin,但会清除 Access-Control-Allow-Credentials。
猜你喜欢
  • 2021-12-28
  • 2019-06-10
  • 1970-01-01
  • 1970-01-01
  • 2012-11-09
  • 2013-05-15
  • 2019-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多