You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Functions:如何禁用HTTPS重定向以调用HTTP外部API

解决Azure Function中HttpClient禁用HTTPS重定向的方法

方法一:全局配置HttpClient(推荐)

在创建HttpClient实例时,通过HttpClientHandler关闭自动重定向功能,后续所有用该实例发起的请求都会遵循这个规则。

代码示例(C#)

// 初始化Handler并禁用自动重定向
var handler = new HttpClientHandler
{
    AllowAutoRedirect = false
};

// 用配置好的Handler创建HttpClient
var httpClient = new HttpClient(handler);

// 发起HTTP请求
var response = await httpClient.GetAsync("http://目标外部API地址");

如果你的Function采用依赖注入管理HttpClient(比如在Program.cs中注册),可以直接在注册阶段配置:

builder.Services.AddHttpClient("NoRedirectClient")
    .ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
    {
        AllowAutoRedirect = false
    });

之后在Function类中通过构造函数注入IHttpClientFactory获取配置好的实例:

private readonly IHttpClientFactory _httpClientFactory;

public MyFunction(IHttpClientFactory httpClientFactory)
{
    _httpClientFactory = httpClientFactory;
}

[FunctionName("MyFunction")]
public async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req)
{
    var httpClient = _httpClientFactory.CreateClient("NoRedirectClient");
    var response = await httpClient.GetAsync("http://目标外部API地址");
    // 处理响应逻辑
    return new OkObjectResult("请求处理完成");
}

方法二:针对单个请求禁用重定向

如果只需要对某一个特定请求关闭重定向,直接为该请求单独配置Handler即可:

using var handler = new HttpClientHandler { AllowAutoRedirect = false };
using var httpClient = new HttpClient(handler);
var request = new HttpRequestMessage(HttpMethod.Get, "http://目标外部API地址");
var response = await httpClient.SendAsync(request);

额外注意点

  • 禁用自动重定向后,若收到3xx状态码的响应,需要自行判断处理(不过根据你的描述,目标API仅支持HTTP,大概率不会出现这类情况)。
  • 检查Function应用的应用设置,确认是否存在强制HTTPS的配置(比如WEBSITE_FORCE_HTTPS),不过这类配置通常是针对Function自身的访问请求,不会影响出站的API调用。

内容的提问来源于stack exchange,提问作者Saranga Kumarapeli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 19:12:36