首先介绍(同源策略)

同源策略是浏览器最核心且基本的安全约定,要求协议、域名、端口都相同为同源,如果非同源时请求数据浏览器会在控制台抛出跨域异常错误,同源策略是浏览器的行为,即使客户端请求发送了,服务端也响应了,但是会拦截,浏览器无法接收到响应数据,保证了数据的安全,避免XSS攻击

跨域的解决办法:

一:document.domain设置

两个不同的源(子域等情况)可以通过设置document.domain告诉浏览器它们是同一个源,想要实现它们两个之间的通信两个都需要设置相同的document.domain

缺点:

用于父域和子域的情况;存在安全性问题,如果其中一个被攻击,另一个也会引起安全问题;适用范围为cookie共享或iframe使用(获取DOM等);

二:JSONP

原理:动态创建script标签,向服务器发送请求,设置script标签src属性后接callback=回调函数,回调函数名与响应一致,响应成功触发回调函数获取响应的数据

缺点:

存在安全问题,需要进一步做安全验证如token等信息;请求方式只能为get请求;

三:CORS

跨域资源共享,设置响应头,允许某个域或全部向服务器发送请求(Access-Control-Allow-Origin: '*')无请求方法限制

四:HTML5新增的window.postMessage API

允许跨窗口通信,无同源限制,postMessage(data, origin)参数一为通信内容,参数二为接收通信的窗口可以为*(所有),然后通过window.addEventListener('message', function(e){})监听message事件,e有三个属性值e.source:发送信息的窗口,e.origin:接收信息的窗口,e.data:通信的内容

五:window.name

只要在同一个窗口,无同源限制,可以通过window.name通信,window.name值长无限制,但须监听window.name值变化,影响应用性能

六:location.hash

即url#后面的片段,可以通过window.onhashchange方法监听获取通信内容

七:websocket

websocket通信协议采用ws://(非加密)wss://(加密)作为协议前缀,无同源限制,服务器可以通过验证请求头的origin实现通信

前端使用window.onerror事件捕获js脚本错误信息,当前端通过script标签加载跨域资源时window.onerror无法获取这些资源中的报错信息,会得到script error,无法知道具体错误,通过设置script标签的crossorigin属性就可以捕获到跨域资源的具体报错信息,对于通过CDN引入js时很有帮助

也需要请求的跨域资源设置Access-Control-Allow-Origin的响应头,不然无法访问该资源

script标签crossorigin属性及同源策略和跨域方法的更多相关文章

  1. 第二百七十四节,同源策略和跨域Ajax

    同源策略和跨域Ajax 什么是同源策略  尽管浏览器的安全措施多种多样,但是要想黑掉一个Web应用,只要在浏览器的多种安全措施中找到某种措施的一个漏洞或者绕过一种安全措施的方法即可.浏览器的各种保安措 ...

  2. JS同源策略和跨域访问

    同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上的,浏览器只 ...

  3. 11. cookie_session_原生ajax_readyState的值_同源策略_跨域_jsonp的使用

    1. cookie 浏览器存储技术.(服务器将少量数据交于浏览器存储管理) 作用: 存储数据, 解决 http 协议无状态问题 工作流程: 浏览器发送请求给服务器,请求登录 服务器返回响应给浏览器,此 ...

  4. Ajax_同源策略以及跨域问题

    Ajax_同源策略 同源策略是浏览器的一种安全策略, 同源指的是:协议.域名.端口.必须完全相同. 违背同源策略就是跨域. 而AJAX是默认遵循同源策略的: 同源说通俗一点呢就是页面跟获取请求的接口是 ...

  5. JS同源策略和跨域问题

    同源策略和跨域问题:http://www.cnblogs.com/chaoyuehedy/p/5556557.html 深入浅出JSONP--解决ajax跨域问题:http://www.cnblogs ...

  6. cors跨域和jsonp劫持漏洞 和 同源策略和跨域请求解决方案

    cors跨域和jsonp劫持漏洞: https://www.toutiao.com/a6759064986984645127/ 同源策略和跨域请求解决方案:https://www.jianshu.co ...

  7. 同源策略、跨域、json和jsonp

    同源策略 源(origin)就是协议.域名和端口号.若地址里面的协议.域名和端口号均相同则属于同源. 以下是相对于 http://www.a.com/test/index.html 的同源检测 • h ...

  8. 1.7 xss之同源策略与跨域访问

    同源策略: 同源策略 在web应用的安全模型中是一个重要概念.在这个策略下,web浏览器允许第一个页面的脚本访问第二个页面里的数据,但是也只有在两个页面有相同的源时.源是由URI,主机名,端口号组合而 ...

  9. XSS中的同源策略和跨域问题

    转自 https://www.cnblogs.com/chaoyuehedy/p/5556557.html 1 同源策略 所谓同源策略,指的是浏览器对不同源的脚本或者文本的访问方式进行的限制.比如源a ...

随机推荐

  1. Java报错: A component required a bean of type 'com.sirifeng.testmybatis.mapper.BookMapper' that could not be found.

    在学习Spring-boot-mybatis时,报错A component required a bean of type 'com.sirifeng.testmybatis.mapper.BookM ...

  2. I/O 引脚

    我们以网卡举例 引脚,芯片,pcb板之间的关系非常紧密 1.引脚,又叫管脚,英文叫Pin. 就是从集成电路(芯片)内部电路引出与外围电路的接线,所有的引脚就构成了这块芯片的接口.引线末端的一段,通过软 ...

  3. 使用加强堆结构解决topK问题

    作者:Grey 原文地址: 使用加强堆结构解决topK问题 题目描述 LintCode 550 · Top K Frequent Words II 思路 由于要统计每个字符串的次数,以及字典序,所以, ...

  4. OSPF 路由协议详解(一)

    (文章目录) ospf 协议是网络层协议 此篇文章适合有一定网络基础的人 ospf 协议最多应用在企业网络中,针对于运营商网络并不是特别的适用,端口号为 89 通过 IP 进行数据的转发 ospf 基 ...

  5. 推荐一个我写的Python库——PyNAS

    介绍 PyNAS是一个以Python的Updog的库为基础,制作而来的库 安装 pip安装(推荐) pip install PyNAS 源码安装(推荐) Github: git clone https ...

  6. input清楚阴影 number属性

    IOS,input出现阴影: input[type="text"],input[type="email"],input[type="search&qu ...

  7. Golang Zap日志

    Zap日志解析 Config.yaml zap: level: 'info' #日志级别 format: 'console' #输出的级别,有console和json prefix: '[cateri ...

  8. linux下的redis操作

    安装  .启动.连接 下载包:wget http://download.redis.io/releases/redis-4.0.8.tar.gz 解压 :tar -xzf redis-4.0.8.ta ...

  9. python数据处理-matplotlib入门(2)-利用随机函数生成变化图形2

    鉴于上一篇中最后三个问题: 1.上述程序是否能进行优化(比如功能相同的) 2.创建三个3个实例,用了3个语句,能否建一个函数,只输入一个数n,就自动创建n个实例?同时,每个实例的num_times随机 ...

  10. 双列集合Map接口 & Collections工具类

    HashMap 常用方法 遍历方式 iterator迭代器  ITIT HashTable 继承字典 Hashtable--Properties 文件读写 总结 Collections工具类