同源策略、跨域、jsonp

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标签请求需要的资源,服务器将数据放在一个回调函数上传回来,然后页面上已经定义好此函数,所以会立即执行。

4.CORS是什么
  • 跨域资源共享(cross origin resource sharing),它允许浏览器向跨域服务器发送XMLHttpRequest请求,克服了Ajax只能同源使用的限制。
  • 只支持ie11及以上的浏览器
同源策略、跨域、jsonp_第1张图片
Paste_Image.png

代码

  • 同源策略演示:
  • 修改hosts文件


    同源策略、跨域、jsonp_第2张图片
    Paste_Image.png
  • 在xampp下测试


    同源策略、跨域、jsonp_第3张图片
    Paste_Image.png
  • 代码如下:

同源策略、跨域、jsonp_第4张图片
Paste_Image.png
  • 跨域

1、 CORS
在上面的php文件中添加header('Access-Control-Allow-Origin: http://a.com');

同源策略、跨域、jsonp_第5张图片
Paste_Image.png
同源策略、跨域、jsonp_第6张图片
Paste_Image.png

2、JSONP

同源策略、跨域、jsonp_第7张图片
Paste_Image.png

代码:

同源策略、跨域、jsonp_第8张图片
Paste_Image.png

你可能感兴趣的:(同源策略、跨域、jsonp)