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

如何阻止其他域名获取Azure Blob存储中的图片?配置CORS后Postman与本地仍可访问图片是否正常?

关于Azure Blob存储CORS规则与访问控制的问题解答

嘿,这个问题其实挺典型的,我来帮你拆解清楚~

一、配置CORS后仍能访问图片是正常的吗?

答案是完全正常,因为你可能对CORS的作用范围有点误解:

CORS(跨域资源共享)本质上是浏览器的安全机制,它的作用是限制浏览器端脚本(比如fetch、XMLHttpRequest)发起的跨域请求,而不是限制所有对Blob资源的访问。具体到你的场景:

  • Postman能访问:Postman不是浏览器,它不会执行浏览器的同源策略和CORS检查,只要你的Blob是公开可访问的,它就能直接请求到资源,和CORS规则无关。
  • 本地网页能显示图片:如果是用<img>标签直接加载图片,这属于浏览器的“简单请求”范畴,浏览器不会触发CORS预检,也不会因为跨域而阻止图片显示——CORS规则在这里限制的是脚本去读取图片的内容(比如用canvas处理图片),而不是限制图片本身的展示。

简单说:CORS是用来允许特定域名的脚本跨域访问资源的,不是用来阻止其他域名访问资源的。

二、如何阻止其他域名获取Azure Blob存储中的图片?

要实现这个需求,你需要用到Azure Blob的访问控制机制,而不是CORS。这里有几个常用方案:

1. 将Blob设置为私有,使用SAS令牌授权访问

这是最常用的方式:

  • 首先修改容器的访问级别:把容器从“公开读取”改成“私有”,这样默认情况下任何人都无法直接访问Blob。
  • 生成SAS(共享访问签名)令牌:可以针对单个Blob、整个容器生成SAS,设置过期时间、允许的IP范围、允许的HTTP方法等。只有持有有效SAS令牌的URL才能访问对应的Blob。
  • 在你的信任域名(比如www.abc.com)的网页中,使用带SAS的URL加载图片,其他域名无法获取到有效SAS,自然无法访问。

2. 配合Azure CDN配置域名白名单

如果你的Blob需要通过CDN加速,可以在CDN层做访问控制:

  • 将Azure Blob存储作为CDN的源站。
  • 在CDN的规则引擎中配置允许的来源域名,只添加你信任的域名(比如www.abc.com),这样其他域名发起的请求会被CDN直接拒绝,无法到达Blob存储。

3. 使用Blob存储防火墙限制IP访问(可选)

如果你的访问来源IP是固定的,可以配置Blob存储的防火墙规则:

  • 在Blob存储的“网络”设置中,添加允许访问的IP地址范围,这样只有来自这些IP的请求才能访问Blob。不过这个方案是基于IP的,不是基于域名的,适合固定办公网络等场景。

注意事项

  • 不要依赖CORS来阻止资源访问:CORS的核心是“允许”而非“禁止”,即使配置了严格的CORS规则,只要Blob是公开的,任何人都能通过直接访问URL获取资源。
  • 私有Blob+SAS是最灵活的方案:既可以控制访问时效,也能限制访问范围,适合大多数网页场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 04:22:36