升级Translator Cognitive Service至V3.0调用遇未授权问题求助
嘿,我来帮你解决这个调用Translator V3.0 API时遇到的未授权问题!结合你的描述,大概率是端点格式和请求头配置的问题,下面分点给你梳理:
1. 修正端点格式是核心
你提到Azure门户的端点是https://westeurope.api.cognitive.microsoft.com/,但Translator V3.0 API的专属端点格式是https://<region>.api.cognitive.microsofttranslator.com/——注意域名后缀是microsofttranslator.com,不是microsoft.com!
举个正确的端点示例(对应你的westeurope区域):https://westeurope.api.cognitive.microsofttranslator.com/translate?api-version=3.0
旧的microsoft.com后缀端点是针对认知服务旧版本或其他服务的,V3.0翻译API必须用microsofttranslator.com的域名。
2. 必须添加区域授权头
除了Ocp-Apim-Subscription-Key,V3.0翻译API要求额外添加Ocp-Apim-Subscription-Region请求头,值为你的Translator资源所在的区域(比如你的westeurope)。这个头用来验证密钥和调用区域的匹配性,缺失的话会直接返回未授权。
3. 确认API版本参数
一定要在请求URL的查询参数里明确指定api-version=3.0,比如上面的示例URL里就包含了这个参数。如果没有指定版本,API会默认使用旧版本,也会导致授权逻辑不匹配。
4. 验证密钥归属
确保你使用的密钥是Translator专属资源的密钥,而不是Azure门户里其他认知服务(比如文本分析、计算机视觉)的密钥。不同资源的密钥不通用,用错密钥也会触发未授权响应。
给你一个Insomnia里的完整请求示例
- 请求方法:POST
- URL:
https://westeurope.api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en&to=zh - 请求头:
Content-Type:application/jsonOcp-Apim-Subscription-Key:你的Azure门户获取的密钥Ocp-Apim-Subscription-Region:westeurope
- 请求体(JSON格式):
[{"Text": "Hello, this is a test translation."}]
按照这个配置调整后,应该就能正常调用了!如果还是有问题,可以检查Insomnia里的请求头有没有拼写错误(比如大小写,不过一般HTTP头不区分大小写,但尽量和文档一致),或者确认你的资源有没有被限流或禁用。
内容的提问来源于stack exchange,提问作者labelle

