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

Azure Computer Vision API不支持带SAS令牌的Blob URL问题咨询

解决Azure Computer Vision API调用带SAS令牌的Blob URL返回Bad Request问题

我之前也碰到过一模一样的问题,给你几个靠谱的排查和解决方向,按顺序试下来基本能搞定:

1. 先确认SAS令牌本身没问题

  • 权限必须包含读权限:生成SAS的时候,一定要勾选「读(Read)」权限(对应权限字符串里的r)。Computer Vision需要读取Blob的内容,只给列表或其他权限肯定不行。
  • 检查有效期:看看SAS的起始时间是不是还没到,或者已经过期了。比如你设置的起始时间是未来的某个点,那现在自然访问不了。
  • 直接测试SAS URL:把带SAS的Blob URL复制到浏览器里,看看能不能正常打开图片。如果浏览器都打不开,那问题肯定出在SAS或者Blob本身,先把这个搞定再去调API。

2. 检查URL拼接格式是否正确

正确的格式应该是:
https://<存储账户名>.blob.core.windows.net/<容器名>/<Blob文件名>?<SAS令牌>

  • 注意不要在Blob URL和SAS之间多打问号,比如有些工具复制SAS的时候会自带一个?,这时候要去掉Blob URL末尾可能多余的问号,避免出现??这种错误格式。
  • 如果Blob文件名里有特殊字符(比如空格、中文),要确保已经做了URL编码,不然API解析的时候会出错。

3. 排查存储账户的防火墙/网络设置

如果你的存储账户设置了防火墙(比如只允许特定IP或虚拟网络访问),那Computer Vision服务的请求可能被拦截了:

  • 可以先临时把存储账户的网络访问设置改成「允许所有网络访问」,测试API能不能正常调用。如果成功了,再把Computer Vision所在区域的服务IP加入存储账户的允许列表,或者配置虚拟网络服务端点来实现私有访问。

4. 验证API请求的参数和格式

  • 确认Endpoint和密钥正确:检查请求用的Computer Vision Endpoint(比如https://eastus.api.cognitive.microsoft.com/vision/v3.2/analyze)是否和你的订阅区域匹配,Ocp-Apim-Subscription-Key有没有拼写错误或者过期。
  • 检查请求体格式:如果是用JSON传url参数,确保字符串没有语法错误,比如引号是否配对,有没有多余的转义字符(除非URL本身需要转义)。举个正确的curl请求示例:
curl -X POST "https://eastus.api.cognitive.microsoft.com/vision/v3.2/analyze?visualFeatures=Categories,Description" \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: 你的订阅密钥" \
-d "{\"url\":\"https://你的存储账户.blob.core.windows.net/容器名/图片名.jpg?sv=2022-11-02&ss=bfqt&srt=sco&sp=r&se=2024-12-31T23:59:59Z&st=2024-01-01T00:00:00Z&spr=https&sig=你的SAS签名\"}"

5. 其他特殊情况排查

  • 如果Blob用了客户管理的密钥加密,要确保Computer Vision服务能访问到对应的密钥,或者暂时切换成微软管理的密钥测试。
  • 确认Blob的文件格式是Computer Vision支持的(比如JPG、PNG、BMP等),有些小众格式可能不被支持。

按这个顺序一步步排查,应该能找到问题所在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:43:21