美文网首页
跨域相关

跨域相关

作者: talent_ray | 来源:发表于2020-03-23 15:12 被阅读0次

同源策略(跨域的原因)

  • 端口相同
  • 域名相同
  • 协议相同
    同源策略的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据

同源策略的限制范围

  • Cookie、localStorage 和IndexDB无法读取
  • DOM无法获得
  • AJAX 请求不能发送

跨域通信的方式

  • JSONP
  • CORS
  • Hash
  • postMessage
  • WebSoket
  • 代理

JSONP跨域

浏览器虽然有同源策略限制,但是像cript标签、link标签、img标签、iframe标签,这种在标签上通过src地址来加载一些内容的时候浏览器是允许进行跨域请求的,所以JSONP的原理就是

  • 创建一个script标签,这个script标签的src就是请求的地址
  • 这个script标签插入到DOM中,浏览器就根据src地址访问服务器资源
  • 返回的资源是一个文本,但是因为是在script标签中,浏览器就会执行它
  • 而这个文本恰好是函数调用的形式,即函数名(数据),浏览器会把它当做JS代码来执行即调用这个函数
  • 只要提前约定好这个函数名,并且这个函数存在于window对象中,就可以把数据传递给处理函数

CORS跨域

CORS(Cross-origin resource sharing) 跨域资源请求
浏览器在请求一个跨域资源的时候,如果是跨域的Ajax请求,它会在请求头中添加提个origin,但是他不知道这个资源服务器是否允许跨域请求,浏览器会发送到服务端,如果服务器返回的头中没有'Access-Control-Allow-Origin:对应网址或 * '的话,那么浏览器就会把请求内容给忽略掉,并且在控制台报错

CORS限制

允许请求的方法
- GET
- POST
- HEAD
允许请求的Content-Type
- text/plain
- mutipart/form-data
- application/x-www-form-ulencoded
其他类型的请求方法和Content-Type需要通过预请求验证后才能发送

Hash值跨域通信

背景:在页面A下提供iframe或frame嵌入了跨域的页面B
容器页面 -> 嵌入页通信:
在A页面中改变B的url中的hash值,B不会刷新,但是B可以通过window.onhashchange时间监听到hash变化

postMessage通信

// 窗口A
window.postMessage('data','http://a.com')
// 窗口B
window.addEventListener('message',function(event){
  console.log(event.origin)  // http://a.com
  console.log(event.source)  // A对象的window引用
  console.log(event.data)   // 数据
})

WebSocket 跨域通信

var ws = new WebSocket('wss://echo.websoket.org') // 后端接口
ws.onopen = function(e){
  ws.send('hello')
}
ws.onmessage = function(e){
console.log(e.data)  
}
ws.onclose = function(e){
 console.log('连接关闭')
}

代理

可以通过nginx代理、node Server进行请求转发

相关文章

  • html2canvas跨域解决方案

    核心代码 useCORS:true,//(图片跨域相关)allowTaint:false,//允许跨域(图片跨域相...

  • 关于跨域以及解决思路

    本章内容目录:一、跨域相关概念的理解二、跨域产生的原因三、跨域的几种解决方案 一、跨域相关概念的理解 首先先了解以...

  • HTML-获取iframe元素的正确方法

    跨域相关文章详解js跨域问题JavaScript跨域总结与解决办法 解释最清楚的jsonpWhat is JSON...

  • 跨域相关

    同源策略(跨域的原因) 端口相同 域名相同 协议相同同源策略的目的,是为了保证用户信息的安全,防止恶意的网站窃取数...

  • 跨域种种

    在开发阶段或者做网页版的软件经常需要跨域。 原理: 在服务器头上设置相关信息,允许进行跨域,则前端可跨域,主动权在...

  • 跨域的相关

    什么是同源策略 同域名,同端口,同协议视为同一个域,浏览器出于安全方面的考虑,只允许与本域下的接口交互。不同源的客...

  • 浅谈前端跨域问题

    最近由于公司的一个项目需求需要前端解决跨域问题,因此学习了下跨域的相关知识,这里做一个总结,方便后期查阅。在讲跨域...

  • 深入跨域问题(3) - 利用 JSONP 解决跨域

    深入跨域问题(1) - 初识 CORS 跨域资源共享;深入跨域问题(2) - 利用 CORS 解决跨域深入跨域问题...

  • 参考文档

    跨域设置 https://enable-cors.org/ React相关 https://reactjs.org...

  • 关于设置env等环境变量的思考

    1、如何处理跨域后台处理跨域前端处理跨域浏览器处理跨域 前端本地处理跨域:代理线上跨域的处理方式:Nginx反向代...

网友评论

      本文标题:跨域相关

      本文链接:https://www.haomeiwen.com/subject/hodwyhtx.html