美文网首页
理解 JSONP

理解 JSONP

作者: 养乐多__ | 来源:发表于2019-07-12 22:35 被阅读0次

一、前置知识

  1. 页面与服务器的交互

在 AJAX 出现之前,页面与服务器的交互是怎么完成的呢?

  • 通过提交 form 表单,但页面会被刷新,用户体验不好;
  • 通过嵌入 iframe 页面,实现只在 iframe 窗口刷新。
  • img 发请求,但 img 只能知道成功或失败,不能获得更多的数据。
  • script 发请求,通过 SRJ(Server rendered javascript),即服务器返回的 javascript,实现无刷新 局部更新页面内容。
  1. aimglinkscript 等都可以发请求;
    script 标签只有放在 bodyhead 里才会发请求,且只能发 get 请求。

  2. script 是不受域名限制的,任何一个网站都可以使用另一个网站的 JS。

二、JSONP

1. 自己理解 JSONP
  • JSONP 要解决的问题是两个网站之间如何交流。
  • 因为 script 标签不受域名限制,所以 JSONP 用 script 标签发请求(跨域 SRJ)。

JSONP
请求方:frank.com 的前端(浏览器)
响应方:jack.com 的后端(服务器)
1、请求方创建 script 标签,src 指向响应方,同时传一个查询参数
?callbackName===xxx
2、响应方根据查询参数 callbackName,构造形如 xxx.call(undefined, '需要的数据') / xxx('需要的数据') 的函数调用的响应。
3、浏览器接收到响应,就会执行 xxx.call(undefined, '需要的数据')
4、那么请求方就得到了需要的数据。
这就是 JSONP。

约定
1、callbackName --> callback
2、xxx --> 随机数

  • JSONP 核心:script + callback 参数
2. JSONP 定义

JSONP(JSON with Padding)是 JSON 的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。其核心思想是利用 JS 标签里面的跨域特性进行跨域数据访问,在 JS 标签里存在的是一个跨域的 URL,实际执行的时候通过这个 URL 获得一段字符串,这段返回的字符串必须是一个合法的 JS 调用,通过 EVAL 这个字符串来完成对获得数据的处理。

3. JSONP 为什么不支持 POST 请求?

因为 JSONP 是通过动态创建 script 标签实现的,而 scriptsrc 指定的 url 只能通过 get 方式获取,所以不支持 post 请求。

相关文章

  • jsonp理解

    1、一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态网页、web服务、...

  • 理解 JSONP

    一、前置知识 页面与服务器的交互 在 AJAX 出现之前,页面与服务器的交互是怎么完成的呢? 通过提交 form ...

  • 理解jsonp

    1 什么是jsonp 首先,因为ajax无法跨域,然后开发者就有所思考 其次,开发者发现, 标签的src属性是可...

  • 理解JSONP 下

    理解JSONP 上 跨域SRJ 如果我访问其他网站的服务器,可以吗?由于JSONP可以规避同源策略,因此可以下面我...

  • 理解JSONP 上

    我们用node来做一个简易服务器理解JSONP,从而了解在没有Ajax的时代的前端是如何绞尽脑汁做好页面交互的 有...

  • 简单理解JSONP

    什么是同源策略? 浏览器出于安全方面的考虑,只允许与本域下的接口交互。不同源的客户端脚本在没有明确授权的情况下,不...

  • 常用前端面试问题

    跨域方法 Jsonp: 采用非同源限制标签进行处理请求,我理解的jsonp => json - page一个jso...

  • JSONP

    JSONP 是一种 JSON 的使用方式, 这里的P 可以理解为 Padding 的意思.为什么要用 JSONP ...

  • 你知道JSONP的三种跨越模式吗?

    JSONP解释 在解释JSONP之前,我们需要了解下”同源策略“这个概念,这对理解跨域有帮助。基于安全的原因,浏览...

  • 你知道JSONP的三种跨越模式吗?

    JSONP解释在解释JSONP之前,我们需要了解下”同源策略“这个概念,这对理解跨域有帮助。基于安全的原因,浏览器...

网友评论

      本文标题:理解 JSONP

      本文链接:https://www.haomeiwen.com/subject/uzjukctx.html