跨域与越狱

概念

跨域是个老生常谈的问题,指的是网页中的JS想去请求非自己域内的数据或者操作非自己域内的DOM对象,说起来有抽象,就好比

  1. 监狱内的犯人想去监狱外买点水果回来牢里吃
  2. 监狱内的犯人想搜狱警大人的口袋

以上两种神操作一般情况下当然是行不通的!

原因

用脚指头想想都知道的,因为这是规定!

谁规定的

  1. 代码世界里当然是浏览器规定的,现实世界里当然是监狱规定的
  • 对于第一种情况:即请求本域外的数据,请求能发出去,服务器也能正常返回,但是浏览器把数据拦截了、拦截了、拦截了!
  • 对于第二种情况:操作非自己域内的`DOM对象:很简单,连那个DOM对象你都获取不到!获取不到!获取不到!

又有抽象?
就好比:

  1. 狱警把你托人在外买的水里给默收然后自己吃掉了,在电影里也是有挺多这种操作的,常规操作!
  2. 犯人根本就碰不到狱警,因为犯人大部分时间是被关起来的

同域

现实世界里当然指的是同个牢房啦!
而浏览器世界里指的是同协议并且同域名并且同端口号,俗称三证齐全,比如httptaobao.com80,也叫做浏览器的同源策略,目的当然是为了:

  1. 保证狱警的安全
  2. 怕情绪不稳定的家属跑进来暴打狱友

解决方法

规定是死的,但人是活的,只要人活着,总有办法的嘛!
而绕过浏览器的同源策略就叫做跨域了!
因此跨域也有各种姿势,各显神通!
比如JSONP就好比贿赂狱警,这个大家都懂的,不说了!
比如CORS就好比官方授权,这个大家也懂的,也不说了!

具体操作细节感觉如果是我自己写的话估计没法超越以下这篇好文了:
九种跨域方式实现原理

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 3,538评论 1 11
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,741评论 1 45
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 5,162评论 0 21
  • 自律与专注,这是我参加第四期的自由书写想去练习的。写到第三月时特别有感觉,一篇500字的作业,如果手写20分钟也就...
    何偀阅读 223评论 3 1
  • 【关注菽麦 | 一起阅读】 《醒来觉得甚是爱你》,这本书的书名,就像是一对恋人在打情骂俏,很符合朱生豪这个情诗王子...
    菽麦阅读 649评论 2 1