未在浏览器中加载Azure blob映像



我们将一些客户文件上传到azure存储帐户,然后允许从web应用程序访问这些文件。

我对一些超过1Mb的文件有问题,因为网络浏览器将它们显示为空白方块,但它们已正确上传,可以下载到。

真正让我困惑的是,响应标题都可以,但图像没有显示。

示例响应标头:

  • HTTP/1.1 200 OK
  • 内容长度:1615694
  • 内容类型:image/jpeg
  • 内容-MD5:A9QHxxvIeNq42 b/1.0 Microsoft HTTPAPI/2.0
  • x-ms-request-id:bc828201-c01e-002d-488c-a57150000000
  • x-ms版本:2009-09-19
  • x-ms-lease-status:unlocked
  • x-ms-blob类型:BlockBlob
  • 访问控制公开标头:x-ms-request-id,服务器,x-ms-version,内容类型,上次修改,ETag,Content-MD5,x-ms-lease-status,x-ms-blob-Type,内容长度,日期,传输编码
  • 访问控制允许来源:*
  • 日期:2022年8月1日星期一09:54:56 GMT

•请确保标题中下面的HTTP参数相应地设置为如下,以使图像正确显示,而不是像描绘它们的正方形:-

Cross-Origin-Resource-Policy : *
Content-Security-Policy : CSP Level 3

此外,请确保浏览器版本是最新的,并禁用设置"阻止第三方cookie"。您必须转到"设置"-->隐私和安全-->网站设置-->Cookie和网站数据-->设置"阻止第三方cookie关闭">

•还要确保您禁用了"Flash和Ads Blocker扩展",这样来自其他未经验证和未经验证来源的图像内容也被允许。最后,还请确保您使用的浏览器具有最新的必要安全更新,以便"内容安全策略"得到他们的支持,以减少CSS(跨站点脚本(攻击的攻击面

请参阅以下链接了解更多详细信息:-

https://content-security-policy.com/#:~:text=%20内容安全策略%20标头,是%20经常%20缩写%20为%20CSP%20。

https://www.geeksforgeeks.org/http-headers/

我唯一想到的是在创建blob时没有设置内容类型。看看你的代码是否如下所示;

var blobServiceClient = new BlobServiceClient("YOURCONNECTIONSTRING");
var containerClient = blobServiceClient.GetBlobContainerClient("YOURCONTAINERNAME");
var blob = containerClient.GetBlobClient("YOURFILE.jpg");
var blobHttpHeader = new BlobHttpHeaders { ContentType = "image/jpeg" };

var uploadedBlob = await blob.UploadAsync(YOURSTREAM, new BlobUploadOptions { HttpHeaders = blobHttpHeader });

PS:最后两行

最新更新