同域和跨域

1.同域或者同源(同一个协议,同一个端口,同一个域名)

(1)它是由Nets cape提出的一个著名的安全策略:指同一个协议、域名、端口。

(2)跨域:指在不同域里获得对应的数据。

(3)实现跨域:

1)凡是有src属性的都可以是实现跨域,例如:(减少和服务器的交互)

    <script>  <img>  <iframe>

2)实现跨域有三种方式:

1.第一种利用iframe实现

(1)主要利用的是domain方式(很多浏览器已经不支持)

(2)Location.search实现,也可以是iframe。

2.第二种是jsonp(不安全,一般也不用)

3.第三种是利用后台代理(cors)。(例如:实例跨域传值——服务器处理,php文件处理)

window.postMessage——(h5新增)

JSONP(不安全):

1.SONP是一种非官方跨域数据交互协议。

2.JSONP即JSON  with  Padding。由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源。如果要进行跨域请求,我们可以通过使用html的script标记来进行跨域请求,并在相应中返回要执行的script代码,其中可以直接使用JSON传递javascript对象,这种跨域的通讯方式称为JSONP.

3.JSONP原理:

script标记src属性中的链接可以访问跨域的js脚本,利用这个特性,服务端不再返回JSON格式的数据,而是返回一段调用某个函数的js代码,在src中进行调用,这样实现了跨域.(src可以跨域)

(1)首先在客户端注册一个callback,然后把callback的名字传给服务器

(2)此时,服务器先生成json数据。然后以javascript语法的方式,生成一个function,function名字就是传递上来的参数jsonp。

(3)最后将json数据直接以入参的方式,放置到function中,这样就生成了一段js语法的文档,返回给客户端。

    <script type="text/javascript">
        function jsonpCallback(a) {
            console.log(a);
        }
    </script>
    <script type="text/javascript" src="http://www.qhdlink-student.top/test/jsonp2.php?callback=jsonpCallback"></script>

CORS介绍:

1.CORS是一个W3C标准,全称是“跨域资源共享”(Cross origin resource sharing)

2.CORS需要浏览器和服务器同时支持,目前,所有浏览器都支持该功能,IE浏览器不能低于IE10.

3.整个CORS通信过程,都是浏览器自动完成,不需要用户参与,对于开发者来说,CORS通信于同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉.

4.因此,实现CORS通信的关键是服务器,只要服务器实现了CORS接口,就可以跨源通信.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值