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

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

代码

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


    Paste_Image.png
  • 在xampp下测试


    Paste_Image.png
  • 代码如下:

Paste_Image.png
  • 跨域

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

Paste_Image.png
Paste_Image.png

2、JSONP

Paste_Image.png

代码:

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

推荐阅读更多精彩内容