首页 > 其他分享 >script crossorigin 属性

script crossorigin 属性

时间:2024-10-22 08:50:49浏览次数:1  
标签:crossorigin script anonymous error 跨域 属性

来源:https://juejin.cn/post/6969825311361859598

 

<script src="xxxx" crossorigin="anonymous"></script>

有时候会看到这样的代码,设置了crossorigin="anonymous"这个属性,个人认知里面是跟跨域有关系的。但是仔细一想,本来 script标签就是可以跨域请求资源的,那crossorigin="anonymous" 这个设置是为了什么?

script 标签请求资源

  1. script标签去请求资源的时候,request是没有origin头的。
  2. 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 属性

  1. 设置 crossorigin属性后,script标签去请求资源的时候,request会带上origin头,然后会要求服务器进行 cors校验,跨域的时候如果response header 没有 ‘Access-Control-Allow-Origin’ 是不会拿到资源的。cors验证通过后,拿到的script运行内部报错的话,,window.onerror 捕获的时候,内部的error.message可以看到完整的错误信息。
  2. crossorigin的属性值分为 anonymoususe-credentials。如果设置了crossorigin属性,但是属性值不正确的话,默认是anonymous
  3. anonymous代表同域会带上cookie,跨域则不带上cookie,相当于 fecth请求的credentials: 'same-origin'
  4. use-credentials跨域也会带上cookie,相当于fetch请求的 credentials: 'include',这种情况下跨域的response header 需要设置'Access-Control-Allow-Credentials' = true,否则cors失败。

总结

  1. 设置了crossorigin就相当于开启了cors校验。
  2. 开启cors校验之后,跨域的script资源在运行出错的时候,window.onerror可以捕获到完整的错误信息。
  3. crossorigin=use-credentials可以跨域带上cookie。

参考资料:

developer.mozilla.org/zh-CN/docs/…

github.com/rainjay/blo…


作者:BSOXDTDTPJHVCKFD
链接:https://juejin.cn/post/6969825311361859598
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:crossorigin,script,anonymous,error,跨域,属性
From: https://www.cnblogs.com/cblx/p/18491748

相关文章

  • 【Coroutines】Implement JavaScript Promise by Kotlin Coroutine
    Expecteduseasynctolaunchaasynctaskuseawaittowaitresultfromotherworkasync{valuser=await<String>{loadUserInfo()}println(user)println("asyncreturned")}println("asyncnotreturn")Implementat......
  • Vue3 + TypeScript:从环境搭建到组件通信的完整前端开发教程
    在前端开发领域,Vue3与TypeScript的组合备受青睐。Vue3带来高效灵活的开发体验,TypeScript则提供强大的类型安全和可维护性。本文将详细介绍如何使用Vue3和TypeScript进行开发,文章内容将按照以下顺序展开:一、环境准备1.安装Node.js:从Node.js官方网站下载并安装适合......
  • [Javascript] Write memoize function
    classMemoizeMap{constructor(){this._map=newMap();this._weakMap=newWeakMap();}_isObject(v){returntypeofv==="object"&&v!==null;}set(key,value){if(this._isObject(key)){this._......
  • 什么是 SAP ABAP Debugger Script
    SAPABAPDebuggerScript是SAP提供的一种工具,允许开发人员在调试ABAP程序时编写脚本来自动化调试过程。这些脚本可以帮助简化复杂的调试任务,例如批量数据断点设置、变量监控、内存分析等。Debugging本身是开发流程中非常重要的环节,而SAPABAPDebuggerScript的目......
  • JavaScriptBOM操作
    认识BOM操作◼BOM:浏览器对象模型(BrowserObjectModel)简称BOM,由浏览器提供的用于处理文档(document)之外的所有内容的其他对象;比如navigator、location、history等对象;◼JavaScript有一个非常重要的运行环境就是浏览器而且浏览器本身又作为一个应用程序需要对其......
  • JavaScript的DOM操作
    元素的继承classStudentextendsPerson{}创建一个Student对象继承自Person对象本身会自带Person的属性并且可以创建属于自己的属性什么是DOM?◼前面我们花了很多时间学习JavaScript的基本语法,但是这些基本语法,但是这些语法好像和做网页没有什么关系,和前面学习的H......
  • JavaScript的事件处理
    认识事件处理◼Web页面需要经常和用户之间进行交互,而交互的过程中我们可能想要捕捉这个交互的过程:比如用户点击了某个按钮、用户在输入框里面输入了某个文本、用户鼠标经过了某个位置;浏览器需要搭建一条JavaScript代码和事件之间的桥梁;当某个事件发生时,让JavaScr......
  • JavaScript递归按条件过滤掉子级数据
    有一个子父级树形结构的数据,现需要递归遍历,找到类型为‘1’的数据,过滤子级,最后返回树形结构数据代码如下//调用方法,返回按要求过滤后的数据constnewArr=this.clearChildrenOfTypeIndex(arr)//定义过滤方法clearChildrenOfTypeIndex(tree){//避免原始数组被直接修改......
  • 2024/10/20: TypeScript 学习笔记三:TypeScript 类型系统
    一、TypeScript提供的对应类型:booleanstringnumberbigintundefinednullsymbol 二、object类型仅能够赋值给以下三种类型:顶端类型any和unknownObject类型空对象类型字面量“{}”注:所有类型都是顶端类型的子类型,所以object能够赋值给顶端类型any和unkno......
  • 使用 JavaScript (Node.js) 实现验证码识别与自动化登录
    安装所需依赖首先,确保你已经安装了Node.js。然后,使用npm安装所需的库:bashnpminstallaxiosjimptesseract.js2.下载验证码图片使用axios下载验证码图片并保存到本地:更多内容联系1436423940javascriptconstfs=require('fs');constaxios=require('axios');......