跨域

什么是同源策略

浏览器出于安全考虑,只允许与本域的接口交互访问,
不同源的客户端脚本在没有明确授权的情况下, 不能读写对方的资源
同源是指:js脚本只能访问或者请求相同协议,相同域名,相同端口的页面。

同源(本域)必须满足3个条件:
1 相同协议
比如: 都是 http或者https
2 相同域名
比如: http://baidu.com/wenku.htmlhttp://baidu.com/eee.php
3 相同端口 , 默认为80端口
比如: http://localhost:8080/aaa.html http://localhost:8080/bbb.htnl

什么是跨域?跨域有几种实现形式

就是在不同的域之间进行访问和数据传输,当前浏览器的页面的URL与请求的的URL不是一个域,调用不同域的接口

四种跨域方式:

  • jsonp
  • CORS
  • 降域
  • postMessage

***跨域问题其实就是浏览器的机制问题,也考虑到了安全性。

JSONP 的原理是什么

先说一下为什么要用script标签实现跨域。
因为在页面上有三种资源是可以与页面本身不同源的。
所以它们是可以链接访问到不同源的资源的。访问不同源就是跨域。
它们是:js脚本,css样式文件,图片。

跨域的前提条件是 服务器愿意提供这么一个接口供使用’
自己必须在前台事先创建一个包裹服务器传过来的数据的函数

而jsonp就是利用了<script>标签可以链接到不同源的js脚本,来到达跨域目的。
利用 页面上 script 标签可以跨域,并且其 src 指定的js脚本到达浏览器会执行的特性,我们可以进行跨域取得数据。
js脚本向服务器请求数据,服务器把早已指定声明存放数据的函数中存放数据,然后返回

jsop缺点:
但是只能在get 请求,
也不像ajax那样直接的获取数据
可能受到入侵,如果服务器给了一个假数据或者是一个危险的js,作为js执行,可能有获取cookie或者其他重要信息的危险

CORS是什么

跨域资源共享,是通过ajax跨域请求资源的方式,支持现代浏览器和IE10以上
怎么实现跨域呢?
只要看访问的地址是不是符合服务器的要求,在服务器端加入一个响应头,Access-Control-Allow-Origin,当浏览器查看返回的响应头包含origin时,浏览器处理响应,可以拿到响应数据。

三种以上跨域的解决方式博客
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、浏览器的同源策略 1.什么是同源? 所谓“同源”指的是”三个相同“。相同的域名、端口和协议,这三个相同的话就视...
    徐国军_plus阅读 868评论 1 3
  • 什么是跨域? 2.) 资源嵌入:、、、等dom标签,还有样式中background:url()、@font-fac...
    电影里的梦i阅读 2,389评论 0 5
  • 前段时间学习了AJAX,已经可以从后台拿到JSON串。可是出现了问题,目前我发送的请求都是在同域下的请求,如果我想...
    大春春阅读 1,063评论 2 13
  • 前言:对于跨域请求,很早之前就有去了解过,但因为一直关注的都是服务器后端开发,故也就仅仅停留在概念的理解上而没有机...
    ken_ljq阅读 89,896评论 6 128
  • 一.标题: 1.这样的女人 我也想撩 2.这么做你也可以10w+ 3.我可能找的假男朋友 二. 广告语:高跟鞋 1...
    王庭阅读 234评论 0 0