Cross-Origin Read Blocking (CORB) blocked cross-origin response 问题


title: Cross-Origin Read Blocking (CORB) blocked cross-origin response 问题
date: 2021-03-08
updated: 2021-03-08
categories:

  • 跨域
    tags:
  • 跨域
  • CORB
  • MinIO

问题起因

今天测试文件上传功能,发现图片上传正常但无法显示,前端浏览器控制台报错如下:

Cross-Origin Read Blocking (CORB) blocked cross-origin response http://minio.xs.com/minio/default/a/111.jpg with MIME type text/html. See https://www.chromestatus.com/feature/5629709824032768 for more details.


部署环境

操作系统:Centos7 Linux 系统

部署方式:Rancher + Kubernates Ingress + MinIO

部署版本:Rancher 2.3.6、Kubernate Client 1.16.1、Kubernate Server 1.17.4、MinIO 2019-10-12T01:39:57Z

问题描述

图片上传成功,但无法显示,如下图。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ewiTsF0r-1615462051859)(cross-origin-read-blocking与MinIO/image-20210308162619746.png)]

解决过程

排除文件上传问题

首先,我将图片地址到地址栏,直接访问图片地址,发现直接访问跳转到 MinIO 的 UI 界面,文件上传成功,MinIO 服务中存在该文件。

定位图片展示问题

然后,我打开浏览器调试工具,选中图片,将图片地址直接放在标签内访问。

<img src="http://minio.xs.com/minio/default/a/111.jpg">

由于直接访问地址,应该不会存在跨域问题,但图片依旧无法显示。

再使用 MinIO 中 Share Object 功能生成分享链接,依旧放入标签内访问。

<img src="http://minio.xs.com/default/a/111.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=xs%2F20210308%2F%2Fs3%2Faws4_request&X-Amz-Date=20210308T084710Z&X-Amz-Expires=432000&X-Amz-SignedHeaders=host&X-Amz-Signature=220fde35c7053a32bc9837632zfabc7b3d632b2d1efb2a43e83a4e03b8689dd1">

此时,发现图片可以正常显示。

猜测和沟通

那么,这时我猜测是 MinIO 访问控制导致的,而我了解到,就在今天上午,我们的运维小伙伴刚刚将 MinIO 从 Rancher 中迁移出来,做了独立部署。

再仔细一看错误信息:with MIME type text/html。哦!为什么请求图片返回的是文本信息?

此时,我更加确信了自己的猜测,应该是在访问 MinIO 图片的时候,发现权限不足,返回了错误的 Html 信息,所以图片才会无法展示。

修改 MinIO 访问权限

进入 MinIO 的 UI 界面中,鼠标放在左侧目录,点击右侧出现的三个小白点。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4LOjaJWp-1615462051872)(cross-origin-read-blocking与MinIO/image-20210308165512273.png)]

选择 Edit policy,弹出权限设置页面。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rOkpK1dE-1615462051875)(cross-origin-read-blocking与MinIO/image-20210308165409223.png)]

在弹出页面的第二列,选择 Read and Write 后,点击 Add 按钮,完成权限设置。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sbnHIOlS-1615462051880)(cross-origin-read-blocking与MinIO/image-20210308165701102.png)]

再次访问页面,发现图片已经可以正常展示了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HqHBu1bN-1615462051882)(cross-origin-read-blocking与MinIO/image-20210308165959603.png)]

解决方案

登录 MinIO UI 界面,添加或修改 MinIO 文件访问权限为 Read and Write ,即可解决。

总结

如果遇到 CORB 问题,那就说明调用接口的实际返回结果和预期不符,需要分析为什么会出现异常的返回值。就如本例中,请求了一张图片,但由于权限问题导致无法访问,接口返回了 text/html 的文本信息,这种报错信息在现在的系统中非常常见,仔细分析就能找到原因。

So, Good Luck! Guys!

参考资料

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Cross-Origin Read Blocking (CORB) 是一项安全功能,用于阻止网页从不同源(即不同域名)读取敏感数据。如果 CORB 检测到跨域请求的数据属于敏感类型,它将阻止该请求并返回错误信息。 ### 回答2: 首先,我们需要了解同源策略(Same Origin Policy)。同源策略是一种安全机制,限制了网站在脚本中如何操作来自不同来源的文档、窗口或框架。简而言之,如果两个页面拥有协议、主机和端口号完全相同,那么它们就是同源的。 而当请求跨域资源时,服务器必须在响应中设置特定的HTTP头——CORS(Cross-Origin Resource Sharing)授权。这个头告诉浏览器是否允许一个页面访问来自不同源服务器的特定资源。如果服务器没有设置这个HTTP头,浏览器默认会阻止请求。 那么,什么是CORB呢?CORB是Chrome浏览器所实现的另一种安全机制,其目的在于防止来自不同源服务器的恶意代码,以及保护隐私信息。它会拦截并阻止一部分潜在的XSS攻击,并使渲染过程更高效。 当我们在Chrome中请求跨域资源时,如果返回的内容被Chrome识别为危险的MIME类型,并且服务器没有设置CORS授权的HTTP头,就会出现“Cross-Origin Read BlockingCORBBlocked Cross-Origin Response”的错误。这个错误意味着浏览器无法读取来自另一个域的响应,因此,浏览器会阻止访问这些跨域资源。 所以,解决这个错误的方法是服务器需要设置CORS授权的HTTP头。如果服务器无法设置这个HTTP头,我们就不能直接从JS中访问这些跨域资源了,而需要采取其它的处理方式,比如通过代理等。 ### 回答3: Cross-origin read blocking (CORB)是一种浏览器安全机制,旨在防止跨站脚本攻击和信息泄漏,防止恶意网站通过注入恶意脚本来窃取用户敏感信息。在实际应用中,由于站点间跨域问题,有可能会经常遭遇到“cross-origin read blocking (corb) blocked cross-origin response”的提示。 “cross-origin read blocking (corb) blocked cross-origin response”提示意味着当前页面试图读取另一个域名下的资源,然而在跨域请求中,目标站点返回了一个被拦截的响应。这通常意味着当前页面试图从一个不受信任的域名下请求资源。浏览器会拦截这个跨域请求,防止页面从其他站点获取潜在的危险信息。 要解决“cross-origin read blocking (corb) blocked cross-origin response问题,有几种方法: 1. 通过设置CORS(跨域资源共享)来允许站点间跨域访问。这需要在目标站点上设置一些标头,例如“Access-Control-Allow-Origin”。 2. 可以考虑使用JSONP(JSON with padding)方法,这是一种跨域请求的方法,它可以通过动态地在页面上添加一个脚本来请求数据。 3. 使用代理服务器可以将跨域请求转发到另一个域名下,以避免被拦截。 总体而言,“cross-origin read blocking (corb) blocked cross-origin response”提示意味着当前页面试图从一个不受信任的站点获取潜在的危险信息。为了保障用户安全和信息安全,浏览器会阻止这样的跨域请求。开发者可以通过设置CORS或使用JSONP等方法来解决这一问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值