6分钟先生有个小网页,用到了bootstrap,原本直接使用bootstrap的cdn加速网址引入bootstrap,用了一段时间,发现有些网络(如深圳的长城宽带)打开的时候常常会卡在bootstrap的cdn文件域名解析过程,导致超过1分钟都打不开网页,这个问题严重了!!
附上bootstrap的官网地址:
http://getbootstrap.com/
以及他们的cdn引入网址:
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
<!-- Latest compiled and minified JavaScript -->
<script src="http://www.shangyouw.cn/uploads/allimg/190806/13251244A-1.webp" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
有没有低价的方案,可以保持bootstrap的css、js、fonts等静态文件依然可以高速访问呢?
阿里云的OSS对象存储是个不错的选择,1G流量0.25 - 0.5元,对于小网站来说,几乎是0成本,却可以瞬间享受跟淘宝一样的高速访问静态资源的服务,为啥不用呢?
于是把bootstrap的所有文件上传到OSS里,把网页头部引入的css文件路径修改为OSS的域名,很期待地刷新页面。
结果,网页和css、js确实秒开了,但是chrome报了三个错误,一看是.ttf、.woff和.woff2都无法访问了,网页上的“glyphicon-share”图标显示破图。
查看chrome的报错,原来是CORS跨域访问被限制了。
找到阿里云帮助文档里关于CORS跨域规则的设定,在OSS里的Bucket属性里对应页面,增加完规则保存后,再重新打开网页,O了!
CORS规则如图所示(来源这里切记要修改成你自己的域名):
补充说明:
第一个选项“来源”里请填写上你的域名,如:
xx.com
*.xx.com
问题解决啦!
最后,啥是CORS跨域访问限制规则或标准呢?
抱着知其然还要知其所以然的心态,谷歌(别问我怎么打开的)了下cors,贴上两个网址如下。
W3C的原名“Cross-Origin Resource Sharing”标准协议:
https://www.w3.org/TR/cors/
希望锻炼英文的同学可仔细阅读下。
懒得看英文的同学可以看这里mozilla浏览器的开发文档“HTTP访问控制(CORS)”:
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS
-本文由6分钟先生原创,首发于今日头条头条号“6分钟先生”,转载请注明出处!