第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

JSONP原理與實(shí)現(xiàn)

標(biāo)簽:
Html/CSS JQuery JavaScript
  • JSON with Padding(Padding 指包裹在服务端响应内容中 JSON 外层的函数名称)

  • 它与 Ajax 无任何关系

  • jsonp

优点

  • 兼容性好,在支持创建 script 标签对的旧版本浏览器中依旧可以良好支持。

缺点

  • 仅支持GET方法

  • 动态创建脚本容易产生XSS攻击

原理

由于浏览器的同源策略限制,在目标域名、端口、协议不一致的情况下,将无法访问目标提供的资源。但是,HTML某些标签提供的src属性,不受该策略影响,因此可以通过该种方式获取目标资源。

  1. 前端动态生成 script 标签对,并设置目标 URL 为 src 属性值。其中,目标 URL 通常会包含客户端 callback 参数名。

  2. 服务端接收 callback 参数;服务端生成响应数据,并使用 callback 参数值包裹该响应内容(传递到客户端后作为函数的参数)。

  3. 客户端加载完成目标资源后,响应内容将在 script 中变为正常的函数调用。

实现

需要服务端配合

前端(原生JS)

<script type="text/javascript">
const customFn = function (data) {  
 // 在获取到目标资源后,将调用该函数   
 console.log(data)
 }
 // 目标API
 const targetURL = 'https://api.shaoyaoju.org/jsonp?callback=customFn';
 // 动态创建 script 标签,并设置 src 属性
 const script = document.createElement('script');
 script.setAttribute('src', targetURL);
 // 将 script 标签插入 body,开始调用目标资源
 document.getElementsByTagName('body')[0].appendChild(script);</script>

后端(Koa.js 实现)

const get = async ctx => {   
  // 获取 callback 参数
   const { callback } = ctx.query
   // 包裹数据
   const data = callback + `({"data": {"key": "value"}})`
   ctx.body = data
}
點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消