你的图片可能是这样被CORB“拦截”的
问题
最近学习一个uniapp+nodejs的项目,前端写了这样一个标签
<image :src="info.imgUrl" ></image>
按理说不应该有什么问题,但运行在 Chrome 后图片却加载不出来,打开控制台看到被CORB策略拦截了,详细信息:
Cross-Origin Read Blocking (CORB) 已屏蔽 MIME 类型为 application/json 的跨域响应
http://localhost:3000/privateImg/xxxxx.bmp。
如需了解详情,请参阅 https://www.chromestatus.com/feature/5629709824032768。
之前最多也就是看到过跨域引起CORS策略的拦截,还没见识过CORB是什么,于是就查阅了资料:
- 什么是
CORB?
全称为Cross-Origin Read Blocking(跨源读取阻塞),是一种判断是否要在跨站资源数据到达页面之前阻断其到达当前站点进程中的算法,降低了敏感数据暴露的风险。 - 为什么会产生
CORB?
跨域标签<script>和<img>等请求回来的数据 MIME type (比较常见的有application/javascript、application/json等)与跨域标签应有的 MIME 类型不匹配时,浏览器会启动CORB保护数据不被泄漏,被保护的数据类型只有 html、xml 和 json。
这时我看到参考文章中关于 内容嗅探技术(MIME sniffing)的介绍,被屏蔽图片的 MIME Type 是 application/json,于是认为浏览器把 MIME Type 推测错了,因此去给服务器的响应添加了首部X-Content-Type-Options: nosniff用来告知浏览器停止内容嗅探,果不其然还是不行。
思路在误区渐行渐远 -> 想着图片被拦截了去关闭CORB策略就该好了,然后用了几种办法都关不掉(可能是新版 Chrome 已经不允许关闭了)。
解决
这个拦截的出现,实际上是因为 image 标签请求的图片资源,后端并没有找到,返回了一个 application/json 类型的 json 反馈信息,于是自然而然被CORS策略拦截了。
重新调整后端的静态资源路由后,问题就解决了。
(没有进行接口测试吃的亏)
参考资料:https://juejin.cn/post/6844903831373889550
你的图片可能是这样被CORB“拦截”的的更多相关文章
- SpringMVC 拦截器(interceptors)对样式(css),JavaScript(js),图片(images)链接的拦截
因为在web.xml配置了 <servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pa ...
- ftp如何预览图片 解决方案
下载使用 server-U ,开启 HTTP 服务,输入 http://ip:端口 后,登录ftp账号密码,可选使用 基于java的应用 web client 或 FTP Voyager JV,来预览 ...
- 在viewPager中双指缩放图片,双击缩放图片,单指拖拽图片
我们就把这个问题叫做图片查看器吧,它的主要功能有: (项目地址:https://github.com/TZHANHONG/ImageViewer/releases/tag/1.0,里面的MyImage ...
- highchart导出功能的介绍更改exporting源码
本案利用highchar作为前端,展示数据的图形效果,结合spring+springmvc来完成数据图片的导出. jsp引入文件: <script src="${pageContext ...
- 粗略整理的java面试题
1.垃圾回收 是回收的空闲堆空间 只有在cpu空闲并且堆空间不足的情况下才回收 2.threadlocal 就是为线程的变量都提供了一个副本,每个线程运行都只是在更新这个副本. Threadloc ...
- 在360、UC等浏览器,img不加载原因
问题:图片在360浏览器不被加载,在UC浏览器强制不显示. 前言不多说,直接上图. 360浏览器显示情况: UC浏览器显示情况: 由以上两张截图可以看到,在360浏览器,banner图片处根本没有加载 ...
- 从.Net到Java学习第十一篇——SpringBoot登录实现
从.Net到Java学习系列目录 通过前面10篇文章的学习,相信我们对SpringBoot已经有了一些了解,那么如何来验证我们的学习成果呢?当然是通过做项目来证明啦!所以从这一篇开始我将会对之前自己做 ...
- SpringMVC框架六:拦截器
拦截器的概念就不介绍了: SpringMVC中拦截器的执行规则: 一个小示例展示: 我搞两个拦截器: 第一个: package org.dreamtech.springmvc.interceptor; ...
- 我的WafBypass之道(upload篇)
0x00 前言 玩waf当然也要讲究循序渐进,姊妹篇就写文件上传好了,感觉也就SQLi和Xss的WafBypass最体现发散性思维的,而文件上传.免杀.权限提升这几点的Bypass更需要的是实战的经验 ...
随机推荐
- ssh 主机之间免密配置脚本
文章目录 单向免密 `expect` 免交互 `sshpass` 免交互 相互免密 单向免密 expect 免交互 注意修改脚本内的 your_password 为 远程主机用户的密码 脚本内的 &q ...
- 面向对象—多态、鸭子类型(Day21)
编程原则java具有自己的编程原则和设计模式,不能多继承.python的编程原则:1.开放封闭原则:开放是对扩展是开放的,封闭是对修改是封闭的(已经写完的代码程序是不能修改的).2.依赖倒置原则:高层 ...
- Hyperledger Fabric 2.x Java区块链应用
一.说明 在上一篇文章中 <Hyperledger Fabric 2.x 自定义智能合约> 分享了智能合约的安装并使用 cli 客户端进行合约的调用:本文将使用 Java 代码基于 fab ...
- angular访问后台服务及监控会话超时的封装实现
以前一直没有想过写一些东西来把项目中用到的知识点及技术实现做一个归纳整理并分享出来.现在打算逐渐的把项目中的一些东西整理并分享出来,与大家共勉! angular本身自带访问组件http和httpcli ...
- Linux Docker虚拟机入门实战讲解
什么是Docker? Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotCloud公司.Docker自开源后受到广泛的关注和讨论,目 前已有多个相关项目,逐渐形成了围绕 ...
- tomcat启动错误:Error running 'Tomcat 9.0.34': Address localhost:1099 is already in use
解决方法博客地址:https://blog.csdn.net/weixin_46697202/article/details/105782670
- Qt:QSqlQuery
0.说明 QSqlQuery提供了执行SQL代码的方法. QSqlQuery封装了在QSqlDatabase中查询.检索数据的相关函数.它可以用来执行如SELECT.INSERT.UPDATE.DEL ...
- 列表生成式 生成器 迭代器 yield
列表生成式 格式:通过一个或者若干个在List里边的for构建List而非List外部的for循环 举个例子:计算从1到10整数的平方构成一个List L=[ x*x for x in range(1 ...
- Go基础知识梳理(三)
Go基础知识梳理(三) 结构 type Person struct { name string sex int } func main() { //推荐写法 person := Person{ nam ...
- 有效提升Python代码性能的三个层面
使用python进入一个熟练的状态之后就会思考提升代码的性能,尤其是python的执行效率还有很大提升空间(委婉的说法).面对提升效率这个话题,python自身提供了很多高性能模块,很多大牛开发出了高 ...