当我尝试 POST 到 Azure 函数时被禁止
Forbidden when I try to POST to Azure function
我已经部署了一个 Azure 函数。
函数应用程序受 Azure Active Directory 保护,因此为了调用它,我必须使用我的 AAD 凭据登录。
当我对该函数进行 GET 调用时一切正常。
但是当我尝试拨打 POST 电话时,我收到以下错误消息:
403 Forbidden
You do not have permission to view this directory or page.
该函数是使用 Visual Studio 部署的,其入口点如下所示:
public static async Task<HttpResponseMessage> Run(
[HttpTrigger(
AuthorizationLevel.Anonymous,
"post", "get",
Route = null)] HttpRequestMessage req,
TraceWriter log)
{
...
}
它对我来说工作正常,下面是我所做的步骤:
- 使用以下代码从 Visual studio 部署了 azure 函数 v1:
[FunctionName("Function1")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
// parse query parameter
string name = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
.Value;
if (name == null)
{
// Get request body
dynamic data = await req.Content.ReadAsAsync<object>();
name = data?.name;
}
return name == null
? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
: req.CreateResponse(HttpStatusCode.OK, "Hello " + name);
}
- 使用 AAD 从门户启用 EasyAUth。
- 从身份验证/授权中获取 AAD 应用程序的 ClientID 和客户端密码 Blade。
- 使用以下 Postman 调用获取令牌:
- 如上所示从邮递员处获得令牌后,使用如下所示的相同令牌调用 azure 函数:
我已经部署了一个 Azure 函数。
函数应用程序受 Azure Active Directory 保护,因此为了调用它,我必须使用我的 AAD 凭据登录。
当我对该函数进行 GET 调用时一切正常。
但是当我尝试拨打 POST 电话时,我收到以下错误消息:
403 Forbidden
You do not have permission to view this directory or page.
该函数是使用 Visual Studio 部署的,其入口点如下所示:
public static async Task<HttpResponseMessage> Run(
[HttpTrigger(
AuthorizationLevel.Anonymous,
"post", "get",
Route = null)] HttpRequestMessage req,
TraceWriter log)
{
...
}
它对我来说工作正常,下面是我所做的步骤:
- 使用以下代码从 Visual studio 部署了 azure 函数 v1:
[FunctionName("Function1")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
// parse query parameter
string name = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
.Value;
if (name == null)
{
// Get request body
dynamic data = await req.Content.ReadAsAsync<object>();
name = data?.name;
}
return name == null
? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
: req.CreateResponse(HttpStatusCode.OK, "Hello " + name);
}
- 使用 AAD 从门户启用 EasyAUth。
- 从身份验证/授权中获取 AAD 应用程序的 ClientID 和客户端密码 Blade。
- 使用以下 Postman 调用获取令牌:
- 如上所示从邮递员处获得令牌后,使用如下所示的相同令牌调用 azure 函数: