vue-cli3环境上图片加载不出来经验小结

简介: 云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 背景本地完全OK,所有图片(svg,png等)都可以正常加载,环境上除了阿里G6的网格加载不出来其他正常。

云栖号资讯:【点击查看更多行业资讯
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!


背景

本地完全OK,所有图片(svg,png等)都可以正常加载,环境上除了阿里G6的网格加载不出来其他正常。但是突然有一天,环境上除了阿里G6的网格,还有其他表示类型的图片(png)也都加载不出来。

分析

F12可以看到控制台报了XXXContent Security PolicyXXX之类的错误(公司电脑无法截图),所以怀疑是CSP相关的原因,后来看了下代码,由于安全原因,后台给http都加了头信息Content-Security-Policy。

vue-cli3打包的时候,对图片打包进行了优化,默认小于10KB的图片(比如png,注意svg不会)转为base64。

base64就是一串字符串码来表示的图片,在加载页面或者js的时候就一并加载过来,减少图片引用时单独的一次http请求,从而优化http请求,保证页面加速渲染。

如果Content-Security-Policy: default-src 'self',就导致了环境上的图片加载失败。

CSP策略

本质上是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置。可以预防XSS攻击。

CSP的开启方法:

a.通过 HTTP 头信息的Content-Security-Policy的字段(后端)

b.通过网页的标签(前端)

如果Content-Security-Policy: default-src 'self',会限制所有的外部资源(img,font,script,style等等),都只能从当前域名加载

解决

a.CSP策略放开img

b.图片不做base64转换

1

拓展:url-loader 和 file-loader的区别

file-loader 返回的是图片的url

url-loader 可以通过limit属性对图片分情况处理,当图片小于limit(单位:byte)大小时转base64,大于limit时调用file-loader对图片进行处理。

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/zhibo

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-04-08
本文作者:refire_zj
本文来自:“掘金”,了解相关信息可以关注“掘金”

相关文章
|
5月前
|
Web App开发 资源调度 JavaScript
Vue初学之使用npm搭建Vue环境
Vue初学之使用npm搭建Vue环境
163 0
|
8月前
|
JavaScript 测试技术
Webpack - Vue 配置开发环境与正式环境
Webpack - Vue 配置开发环境与正式环境
92 1
|
8月前
|
JavaScript 前端开发 开发者
Vue工程化开发(脚手架环境)(上)
Vue工程化开发(脚手架环境)(上)
54 0
|
16天前
|
JavaScript 测试技术
vue不同环境打包环境变量处理
vue不同环境打包环境变量处理
30 0
QGS
|
4月前
|
缓存 JavaScript 前端开发
初识Sringboot3+vue3环境准备
初识Sringboot3+vue3环境准备
QGS
31 1
|
4月前
|
JavaScript
Vue3 + Typescript + Node.js 搭建elementUI使用环境
Vue3 + Typescript + Node.js 搭建elementUI使用环境
43 0
|
5月前
|
JavaScript 前端开发
《Webpack5 核心原理与应用实践》学习笔记-> 搭建Vue环境
《Webpack5 核心原理与应用实践》学习笔记-> 搭建Vue环境
29 0
|
6月前
|
开发框架 JavaScript 前端开发
vue2.0 + element-ui 实战项目- 搭建环境(一)
vue2.0 + element-ui 实战项目- 搭建环境(一)
62 0
|
6月前
|
域名解析 开发框架 JavaScript
Vue项目从搭建环境到打包上线
Vue项目从搭建环境到打包上线
63 0
|
6月前
|
开发框架 JavaScript 前端开发
Vue移动端框架Mint UI教程-搭建环境引入框架(一)
Vue移动端框架Mint UI教程-搭建环境引入框架(一)
55 0