首页 > 解决方案 > 使用 http 而不是 https 时,Azure 函数 POST 解释为 GET

问题描述

我有一个 Azure Functions .NET Core 3.1 端点,我从 Postman 向其发送 POST 命令。当我使用https (SSL)向我的端点发送请求时,一切正常。当我使用http访问同一端点时,传入 HttpRequest 的方法是“GET”而不是“POST”。除了我的函数可以采用 GET 或 POST 方法这一事实之外,我对 host.json 文件没有什么特别之处,这个函数应用程序也没有什么不寻常的地方。这是我的host.json:

{
  "version": "2.0"
}

我的任何功能:

[FunctionName("GraphQL")]
public IActionResult Get
(
    [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "graphql")] HttpRequest req,
    ILogger log
)
{
    // ... req.Method === "GET" here when under only http, even when a POST
}

标签: c#.net-coreazure-functions

解决方案


我相信您通过 http 发送的 HTTP 请求可能正在接收 302 响应并因此重定向它。

重定向时,它不会重定向为 POST,而是重定向为 GET,并且您的函数会将其视为 GET。

在您的 Azure Function App 设置/自定义域中,尝试将 HTTPS only 设置为 true 以查看它是否可以解决问题。


推荐阅读