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

如何通过PowerShell向Azure机器学习Web服务传递API密钥以解决授权错误?

解决Invoke-WebRequest访问Azure机器学习Web服务的未授权问题

这种"Request is unauthorized to access resource."的错误在调用Azure ML Web服务时太常见了,核心原因就是你的请求没有带上服务要求的API密钥验证信息。Azure ML Web服务默认会拒绝未携带有效授权凭证的请求,下面给你两种靠谱的解决方法,以及一些需要注意的细节:

方法一:通过Authorization头传递API密钥(经典Web服务适用)

大多数Azure ML经典Web服务要求在请求头里添加Authorization: ApiKey <你的密钥>,你可以在PowerShell里这样写:

# 先定义好你的变量
$Url = "你的Azure ML Web服务端点URL"
$body = '{"input_data": {"columns": ["col1", "col2"], "data": [[1, 2]]}}' # 替换成符合服务要求的JSON请求体
$apiKey = "从Azure ML工作室复制的Web服务API密钥"

# 发起授权请求
Invoke-WebRequest -Uri $Url -Method POST -Body $body -Headers @{"Authorization" = "ApiKey $apiKey"} -ContentType "application/json"

方法二:通过api-key头传递密钥(部分托管端点适用)

如果是Azure ML托管在线端点,有些场景下可以直接用api-key头传递密钥,命令如下:

$Url = "你的托管端点URL"
$body = '{"input_data": {"columns": ["col1", "col2"], "data": [[1, 2]]}}'
$apiKey = "你的托管端点API密钥"

Invoke-WebRequest -Uri $Url -Method POST -Body $body -Headers @{"api-key" = $apiKey} -ContentType "application/json"

额外注意事项

  • 别漏了ContentType参数:绝大多数情况下,Web服务要求请求体是JSON格式,一定要加上-ContentType "application/json",不然服务可能无法正确解析请求,甚至间接导致授权验证失败。
  • 检查密钥正确性:确保你复制的API密钥没有多余的空格,最好直接从Azure ML工作室的Web服务详情页面复制粘贴。
  • 托管端点的特殊情况:如果是Azure ML托管在线端点,部分场景可能要求使用Azure AD令牌(Bearer Token)而不是API密钥,这种情况下你需要先获取令牌再发起请求:
    # 先安装Az模块(如果没装的话:Install-Module -Name Az -AllowClobber -Scope CurrentUser)
    $token = (Get-AzAccessToken -ResourceUrl "https://ml.azure.com").Token
    Invoke-WebRequest -Uri $Url -Method POST -Body $body -Headers @{"Authorization" = "Bearer $token"} -ContentType "application/json"
    

内容的提问来源于stack exchange,提问作者Reza Amya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:35:25