1.什么是同源策略
- 同源就是协议、域名、端口号相同。
- 协议: http、https
- 域名 :www.jirengu.com
- 端口号:http协议默认端口80,https协议默认端口443
同源策略是为了浏览器安全而制定的一种规则,如果你的网站想要访问的资源不是同源的就会被拒绝,就好比京东要访问淘宝的资源,因为他们的域名不同,两个网站就不同源,所以会被拒绝。
2.什么是跨域?跨域有几种实现形式
-
跨域就是突破同源策略的限制。
-
跨域的几种实现形式:
-
降域:(1)域名后缀相同chilid1.a.com和chilid2.a.com
(2)设置document.domain = xxx.html完成降域,就可以跨域了。 -
JSONP(json with padding)只支持get请求,安全性不好,兼容性好。
-
CORS (cross-origin-resource-sharing)
-
html5中的window.postMessage来实现跨域。
3.jsonp 的原理是什么
利用script标签的跨域性,在页面上动态添加一个<script src=""></script>,让script标签请求需要的资源,服务器将数据放在一个回调函数上传回来,然后页面上已经定义好此函数,所以会立即执行。
4.CORS是什么
- 跨域资源共享(cross origin resource sharing),它允许浏览器向跨域服务器发送XMLHttpRequest请求,克服了Ajax只能同源使用的限制。
- 只支持ie11及以上的浏览器
![](https://img.haomeiwen.com/i2397444/d086c2bb09beae85.png)
代码
-
同源策略演示:
-
修改hosts文件
Paste_Image.png
-
在xampp下测试
Paste_Image.png
-
代码如下:
![](https://img.haomeiwen.com/i2397444/6a41ee3aa17bcc85.png)
-
跨域
1、 CORS
在上面的php文件中添加header('Access-Control-Allow-Origin: http://a.com');
![](https://img.haomeiwen.com/i2397444/9801d315f99c7545.png)
![](https://img.haomeiwen.com/i2397444/77140e60509dc3d4.png)
2、JSONP
![](https://img.haomeiwen.com/i2397444/46483640ef8b445b.png)
代码:
![](https://img.haomeiwen.com/i2397444/25128e3d74dd8269.png)
网友评论