小编Dre*_*ach的帖子

来自 Azure Function 的 C# HttpClient POST 请求(带有用于第三方 API 的授权标记)将被删除标头和正文

更新

我能够发布工作请求。第三方 API 让我们发送令牌(基本上是 Guid)作为不记名令牌。Azure 似乎对此进行了某种预验证。当我用真正随机生成的不记名令牌替换 GUID 时,它起作用了。

我仍然想知道是否有办法禁用此 Azure 签入功能。“坏”承载令牌适用于 GET 请求,但不适用于 POST/PUT 请求。

应用程序摘要 我们有 Azure 函数(即时间触发器、Orchestrator、活动),可以在 SQL 中查找本地队列表中的项目,然后通过 JSON 将其 POST 到第三方 API。

第三方 API 需要在 POST 请求中包含 Authorization 标头。

技术概述

  • 点网核心 3.1
  • 天蓝色函数运行时〜3

附加信息

  • 该代码库在今年 4 月至 5 月的 UAT 期间运行良好。然后它就闲置了,直到几周前我们重新启动了该项目。
  • 出站请求不通过 APIM 代理。它们被直接发送到第三方 API
  • Application Insights 已针对 Azure Functions 配置

什么有效 所有 GET 请求。完全没有问题。

POST 请求不起作用。我将请求代理给蜂感受器,以准确查看收到的内容。当包含授权标头时,大多数标头都会被删除(即内容类型、内容长度),并且请求正文为空。

如果我删除了授权标头,则所有标头和正文都会按预期接收。

问题 我现在只能假设某些 Azure 服务、飞行前检查、安全策略正在拦截授权标头,认为它是用于“自身”的,但我完全不知道它可能是什么。我已经使用 Google 好几天了。

代码的简化版本

using var client = new HttpClient();
client.DefaultRequestHeaders.Clear();

// Request …
Run Code Online (Sandbox Code Playgroud)

c# azure dotnet-httpclient .net-core azure-functions

7
推荐指数
1
解决办法
2215
查看次数