script crossorigin 属性
来源:https://juejin.cn/post/6969825311361859598
<script src="xxxx" crossorigin="anonymous"></script>
有时候会看到这样的代码,设置了crossorigin="anonymous"这个属性,个人认知里面是跟跨域有关系的。但是仔细一想,本来 script标签就是可以跨域请求资源的,那crossorigin="anonymous" 这个设置是为了什么?
script 标签请求资源
script标签去请求资源的时候,request是没有origin头的。script标签请求跨域资源的时候,内部运行如果报错的话,window.onerror捕获的时候,内部的error.message只能看到Script error.看不到完整的错误内容。这个应该是浏览器的安全策略。
js
window.addEventListener('error', function(msg, url, lineno, colno, error) {
    console.log('error catch:', msg.message);
    return false
})
script标签 crossorigin 属性
- 设置 
crossorigin属性后,script标签去请求资源的时候,request会带上origin头,然后会要求服务器进行 cors校验,跨域的时候如果response header 没有 ‘Access-Control-Allow-Origin’ 是不会拿到资源的。cors验证通过后,拿到的script运行内部报错的话,,window.onerror捕获的时候,内部的error.message可以看到完整的错误信息。 crossorigin的属性值分为anonymous和use-credentials。如果设置了crossorigin属性,但是属性值不正确的话,默认是anonymous。anonymous代表同域会带上cookie,跨域则不带上cookie,相当于 fecth请求的credentials: 'same-origin'。use-credentials跨域也会带上cookie,相当于fetch请求的credentials: 'include',这种情况下跨域的response header 需要设置'Access-Control-Allow-Credentials' = true,否则cors失败。
总结
- 设置了
crossorigin就相当于开启了cors校验。 - 开启cors校验之后,跨域的script资源在运行出错的时候,
window.onerror可以捕获到完整的错误信息。 crossorigin=use-credentials可以跨域带上cookie。
参考资料:
链接:https://juejin.cn/post/6969825311361859598
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
script crossorigin 属性的更多相关文章
- [转]HTML5 script 标签的 crossorigin 属性到底有什么用?
		
HTML5 script 标签的 crossorigin 属性到底有什么用? 最近Bootstrap 4已经正式发布了,可能已经有爱尝鲜的小伙伴在 alpha 阶段就尝试过 BS4.不过今天要说的不是 ...
 - script标签的crossorigin属性
		
通常我们使用window.onerror来捕获js脚本的错误信息. 但是对于跨域调用的js脚本,onerror事件只会给出很少的报错信息:error: Script error. 这个简单的信息很明显 ...
 - script标签crossorigin属性及同源策略和跨域方法
		
首先介绍(同源策略) 同源策略是浏览器最核心且基本的安全约定,要求协议.域名.端口都相同为同源,如果非同源时请求数据浏览器会在控制台抛出跨域异常错误,同源策略是浏览器的行为,即使客户端请求发送了,服务 ...
 - js中的script标签属性
		
HTML <script> 元素用于嵌入或引用可执行脚本. 在html中插入一个script标签 <script src="index.js" sync cros ...
 - 1关于script标签属性,注意点,浏览器文档模式,各种数据类型的转化
		
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
 - Script text 属性
		
参考 Script text 属性
 - HTML 5 <script> async 属性简单设置代码异步执行
		
HTML5中 script标签支持脚本的异步执行async.脚本将会异步运行: <script type="text/javascript" src="demo_a ...
 - script标签属性sync和defer
		
<script src="a.js" defer></script> 加了defer属性script标签的页面,运行流程如下: 1.浏览器开始解析HTM ...
 - 引入其他服务的JS、和 本地的JS文件,script的属性
		
==============使用其他服务器引入JS文件,1,减轻服务器压力2,速度快3,可以缓存 cdnjs库,更新比较快https://cdnjs.com/ cdn库 引入JS文件如:jqueryb ...
 - html 的 crossorigin 属性
		
添加这个属性, 并且服务器允许跨域后,会得到精确的报错信息. 添加这个属性,但服务器不允许跨域,就会被同源策略阻止加载资源. 不添加这个属性,只能知道报错,不知道具体信息. https://www.j ...
 
随机推荐
- 哪家开源 ChatGPT 生成代码好
			
试玩 poe 上的代码生成器,Sage,Claud-instant,Dragonfly 效果都不错,太省事了.于是想找一下开源平替哪家强,回头在自己的显卡上跑起来. 我试验的内容是 根据下面的函数编写 ...
 - arch linux deepin-wine-wechat
			
https://aur.archlinux.org/packages/deepin-wine-wechat md5sum for WeChatSetup-3.9.0.28.exe should be ...
 - Spring注解之-@ConditionalOnExpression表达式
			
@ConditionalOnExpression("'true") 当括号中的内容为true时,使用该注解的类被实例化,支持语法如下: @ConditionalOnExpressi ...
 - Qt编写地图综合应用57-跨平台(win、linux、mac、uos、kylin等)
			
一.前言 跨平台着实花了不少的精力,为了从Qt4.7兼容到Qt6.2及后续版本,头发掉了不少,仅有的几根毛所剩无几,哎,可能这就是程序员的命,本人写Qt程序这么多年,比较喜欢支持多个Qt版本,尤其是钟 ...
 - [转]idea2021.1破解版 附安装教程免激活码
			
参看链接:http://www.ddooo.com/softdown/190256.htm 百度网盘地址:https://pan.baidu.com/share/init?surl=qwywmPK-F ...
 - 微信小游戏直播在Android端的跨进程渲染推流实践
			
本文由微信开发团队工程师"virwu"分享. 1.引言 近期,微信小游戏支持了视频号一键开播,将微信升级到最新版本,打开腾讯系小游戏(如跳一跳.欢乐斗地主等),在右上角菜单就可以看 ...
 - Solution Set - “让季节停止哽咽”
			
目录 0.「CTT 2017」「洛谷 P4004」Hello world! 1.「CTT 2017」「洛谷 P4006」小 Y 和二叉树 2.「CTT 2017」「洛谷 P4226」避难所 3.「AG ...
 - ABC 384(A~F)
			
期末周的第二把网瘾,vp了一把abc.这把打得还是比较舒服的,做出了A~E.但最后两道题还是出得太慢了(一道思路太慢,一道调试太慢).什么时候能够在赛时做出F题呢qwq... ABC 这场abc的AB ...
 - SSH 框架的搭建
			
Structs1+spring+Hibernate Structs 相当于mvc设计模式中V.C,即jsp页面和Servlet: spring 管理业务逻辑,即Service: Hibernate ...
 - 隐私集合求交(PSI)-多方
			
本文主要讲解一个多方的PSI协议,文章转载:隐私计算关键技术:多方隐私集合求交(PSI)从原理到实现以及多方隐私求交--基于OPPRF的MULTI-PARTY PSI:原论文:Practical Mu ...