gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:52:27 26 4
gpt4 key购买 nike

更新

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

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

申请摘要我们有 Azure Functions(即时间触发器、Orchestrator、Activities),可以在 SQL 中查找本地队列表中的项目,然后通过 JSON 将其 POST 到第三方 API。

第三方 API 需要在 POST 请求中包含授权 header 。

技术概述

  • dotnet 核心 3.1
  • Azure 函数运行时 ~3

其他信息

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

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

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

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

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

简化版代码

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

// Request params are dynamic and a helper method builds the full request path
var path = PathBuilder(queueItem.RequestParams, queueItem.Request.UrlPath);

// This can change in code not shown if the request is sending files
var contentType = "application/json";

client.BaseAddress = new Uri(queueItem.Request.Client.BaseApiUrl);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.CacheControl = new CacheControlHeaderValue { NoCache = true };
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", queueItem.Request.Client.AuthToken);

// queueItem.Data is JSON
HttpContent json = new StringContent(queueItem.Data, Encoding.UTF8, contentType);
return await client.PostAsync(path, json);

还有...

  • 我已确认 JSON 正文有效
  • 代码确实有效并且保持不变

最佳答案

考虑到您已经尝试过的所有方法,这可能不太可能,但是您是否尝试过添加如下 token :

client.DefaultRequestHeaders.TryAddWithoutValidation(“Authorization”, “bearer token here…”);

然后检查尝试是否成功?

关于来自 Azure Function 的 C# HttpClient POST 请求(带有用于第三方 API 的授权标记)将被删除 header 和正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69635919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com