JSONP 接口

1. JSONP 的概念與特點(diǎn)

- 概念:瀏覽器端通過(guò) <script> 標(biāo)簽的 src 屬性报腔,請(qǐng)求服務(wù)器上的數(shù)據(jù)株搔,同時(shí),服務(wù)器返回一個(gè)函數(shù)的調(diào)用纯蛾。這種請(qǐng)求數(shù)據(jù)的方式叫做 JSONP纤房。

- 特點(diǎn):

? ? ① JSONP 不屬于真正的 Ajax 請(qǐng)求,因?yàn)樗鼪](méi)有使用 XMLHttpRequest 這個(gè)對(duì)象翻诉。

? ? ② JSONP 僅支持 GET 請(qǐng)求炮姨,不支持 POST、PUT碰煌、DELETE 等請(qǐng)求舒岸。

2. 創(chuàng)建 JSONP 接口的注意事項(xiàng)

- 如果項(xiàng)目中已經(jīng)配置了 CORS 跨域資源共享,為了防止沖突芦圾,必須在配置 CORS 中間件之前聲明 JSONP 的接口蛾派。否則 JSONP 接口會(huì)被處理成開(kāi)啟了 CORS 的接口。示例代碼如下:

```js

? ? // 優(yōu)先創(chuàng)建 JSOP 接口

? ? app.get('/api/jsonp', (req,res) => {})

? ? // 再配置 CORS 中間件 ? 【后續(xù)所有的接口都會(huì)被處理成 CORS 接口】

? ? app.use(cors())

? ? app.get('/api/get', (req,res) => {})

```

3. 實(shí)現(xiàn) JSONP 接口的步驟

? ? ① 獲取客戶(hù)端發(fā)送過(guò)來(lái)的回調(diào)函數(shù)的名字

? ? ② 得到要通過(guò) JSONP 形式發(fā)送給客戶(hù)端的數(shù)據(jù)

? ? ③ 根據(jù)前兩步得到的數(shù)據(jù)个少,拼接出一個(gè)函數(shù)調(diào)用的字符串

? ? ④ 把上一步拼接得到的字符串洪乍,響應(yīng)給客戶(hù)端的 <script> 標(biāo)簽進(jìn)行解析執(zhí)行

4. 實(shí)現(xiàn) JSONP 接口的具體代碼

```js

? ? app.get('/api/jsonp', (req, res) => {

? ? ? ? // 1.獲取客戶(hù)端發(fā)送過(guò)來(lái)的回調(diào)函數(shù)的名字

? ? ? ? const funcName = req.query.callback

? ? ? ? // 2.得到要通過(guò) JSONP 形式發(fā)送給客戶(hù)端的數(shù)據(jù)

? ? ? ? const data = { nameL 'zs', age: 22}

? ? ? ? // 3.根據(jù)前兩步得到的數(shù)據(jù),拼接出一個(gè)函數(shù)調(diào)用的字符串

? ? ? ? const scriptStr = `${funcName}(${JSON.stringify(data)})`

? ? ? ? // 4. 把上一步拼接得到的字符串夜焦,響應(yīng)給客戶(hù)端的 <script> 標(biāo)簽進(jìn)行解析執(zhí)行

? ? ? ? res.send(scriptStr)

? ? })

```

5. 在網(wǎng)頁(yè)中使用 jQuery 發(fā)起 JSONP 請(qǐng)求

- 調(diào)用 $.ajax() 函數(shù)壳澳,提供 JSONP 的配置選項(xiàng),從而發(fā)起 JSONP 請(qǐng)求茫经,示例代碼如下:

```js

? ? $.ajax({

? ? ? ? method: 'get',

? ? ? ? url: 'http://127.0.0.1/api/jsonp',

? ? ? ? dataType: 'jsonp', ? ? ?// 表示要發(fā)送 JSONP 的請(qǐng)求

? ? ? ? success: function (res) {

? ? ? ? ? ? console.log(res)

? ? ? ? }

? ? })

```

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末钾埂,一起剝皮案震驚了整個(gè)濱河市河闰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌褥紫,老刑警劉巖姜性,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異髓考,居然都是意外死亡部念,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人测萎,你說(shuō)我怎么就攤上這事以舒。” “怎么了贮预?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我妹田,道長(zhǎng),這世上最難降的妖魔是什么鹃共? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任鬼佣,我火速辦了婚禮,結(jié)果婚禮上霜浴,老公的妹妹穿的比我還像新娘晶衷。我一直安慰自己,他們只是感情好阴孟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布晌纫。 她就那樣靜靜地躺著,像睡著了一般永丝。 火紅的嫁衣襯著肌膚如雪缸匪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,698評(píng)論 1 305
  • 那天类溢,我揣著相機(jī)與錄音凌蔬,去河邊找鬼。 笑死闯冷,一個(gè)胖子當(dāng)著我的面吹牛砂心,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蛇耀,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼辩诞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了纺涤?” 一聲冷哼從身側(cè)響起译暂,我...
    開(kāi)封第一講書(shū)人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤抠忘,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后外永,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體崎脉,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年伯顶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了囚灼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡祭衩,死狀恐怖灶体,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情掐暮,我是刑警寧澤蝎抽,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站路克,受9級(jí)特大地震影響樟结,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜衷戈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一狭吼、第九天 我趴在偏房一處隱蔽的房頂上張望层坠。 院中可真熱鬧殖妇,春花似錦、人聲如沸破花。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)座每。三九已至前鹅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間峭梳,已是汗流浹背舰绘。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留葱椭,地道東北人捂寿。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像孵运,于是被迫代替她去往敵國(guó)和親秦陋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 同源策略 同源策略:瀏覽器出于安全性的考量而制定的策略治笨,只允許與本域下的接口交互驳概。> 不同源的客戶(hù)端腳本在沒(méi)有明確...
    邢烽朔閱讀 199評(píng)論 0 0
  • 1.什么是同源策略 同源策略(Same origin Policy):瀏覽器出于安全方面的考慮赤嚼,只允許與本域下的接...
    hellowade閱讀 186評(píng)論 0 0
  • 跨域問(wèn)題的產(chǎn)生: 因?yàn)闉g覽器有同源策略待榔,只有在同域名逞壁,同端口,同協(xié)議的情況下才可以進(jìn)行數(shù)據(jù)交互锐锣;有的時(shí)候腌闯,例如:在...
    浪流兒閱讀 1,669評(píng)論 2 4
  • 一、路由 1. 什么是路由 (1)路由就是映射關(guān)系雕憔。(2)在 Express 中姿骏,路由指的是客戶(hù)端的請(qǐng)求與服務(wù)器處...
    大刀劈向鬼子閱讀 227評(píng)論 0 0
  • node.js 介紹 node.js是什么 node.js 是一個(gè)開(kāi)發(fā)平臺(tái),就像java開(kāi)發(fā)平臺(tái)...何為開(kāi)發(fā)平臺(tái)...
    小淺_閱讀 1,164評(píng)論 0 6