JSONP_跨域

1. 什么是同源策略

  • 同源策略,它是由Netscape提出的一个著名的安全策略
    现在所有支持JavaScript 的浏览器都会使用这个策略。
    所谓同源是指,域名,协议,端口相同。
    当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面
    当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的,
    即检查是否同源,只有和百度同源的脚本才会被执行。
    如果非同源,那么在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。

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

  • 跨域是指因同源策略的限制,所以诞生了跨域,指http://a.jrg.com可以向http://b.jrg.com请求数据。
  • 跨域4种实现方式:
    • jsonp
      • 通过<script></script>实现,因为这种方法引用非同源数据时,浏览器不阻止
      • 实现方法是在URL参数中添加双方谈好的参数,当对方接收到URL中有该参数,便将拼装好的data返回,这时我们JS代码中也有这样的函数,就会执行
    • 降域
      • 降域是指降低域名来进行跨域,如:
        • http://a.jrg.comhttp://b.jrg.com
        • 两个页面通过document.domain = "jrg,com"
      • 降低域名就可以访问,这种方法有限制,就是主域要相同
    • cors
      • 浏览器发现这次跨源AJAX请求是简单请求,就自动在头信息之中,添加一个Origin字段。Origin字段用来说明,本次请求来自哪个源(协议 + 域名 + 端口)。服务器根据这个值,决定是否同意这次请求。如果对方添加了Access-Control-Allow-Origin: *,服务器会返回响应,浏览器请求数据
      • 需要注意的是,如果要发送Cookie,Access-Control-Allow-Origin就不能设为星号,必须指定明确的、与请求网页一致的域名。
      • 跨域资源共享 CORS 详解
    • postMessage
      • 通过postMessage(data,origin) 这个H5的新API实现跨域,当通过某些动作或者事件出发后,就会利用window.frames[0].postMessage()发送数据过去<iframe>标签所嵌套的窗口,对方js代码中如果有监听,则可以进行跨域
      • html5 postMessage解决跨域、跨窗口消息传递

3.JSONP 的原理是什么

  • 通过<script></script>实现,因为这种方法引用非同源数据时,浏览器不阻止
    • 实现方法是在URL参数中添加双方谈好的参数,当对方接收到URL中有该参数,便将拼装好的data返回,这时我们JS代码中也有这样的函数,就会执行,如:
1.png
2.png

4.CORS是什么

  • 浏览器发现这次跨源AJAX请求是简单请求,就自动在头信息之中,添加一个Origin字段。Origin字段用来说明,本次请求来自哪个源(协议 + 域名 + 端口)。服务器根据这个值,决定是否同意这次请求。如果对方添加了Access-Control-Allow-Origin: *,服务器会返回响应,浏览器请求数据
    • 需要注意的是,如果要发送CookieAccess-Control-Allow-Origin就不能设为星号,必须指定明确的、与请求网页一致的域名。
1.png
2.png

5.根据视频里的讲解演示三种以上跨域的解决方式

  • Jsonp & Cors
1.png
2.png
  • postMessage
1.png
2.png
  • 降域
1.png
2.png

** 跨域处理方式代码 **

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是同源策略 同源政策(same-origin policy)是指同域名(或ip),同端口,同协议视为同一个域,...
    小囧兔阅读 3,652评论 0 1
  • 题目1: 什么是同源策略 浏览器出于安全考虑,只允许与本域下的接口交互。不同源的客户端脚本在没有明确授权的情况下,...
    saintkl阅读 1,657评论 0 0
  • 1: 什么是同源策略 最初,它的含义是指,A网页设置的 Cookie,B网页不能打开,除非这两个网页"同源",所谓...
    好奇而已阅读 2,490评论 0 0
  • 1.什么是同源策略浏览器出于安全方面的考虑,只允许与本域下的接口交互。不同源的客户端脚本在没有明确授权的情况下,不...
    24_Magic阅读 3,459评论 0 0
  • 什么是同源策略 同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995...
    YQY_苑阅读 2,755评论 0 0