当前位置:网站首页>Principe jsonp
Principe jsonp
2022-07-16 07:52:00 【Petit castor.】
Utilisation script L'étiquette n'a pas de vulnérabilité de restriction inter - domaines,Les pages Web peuvent être générées dynamiquement à partir d'autres sources JSON Données.JSONP
.La demande doit être prise en charge par le serveur de l'autre.
- JSONPEtAJAXComparer
JSONPEtAJAXMême chose.,C'est le client qui envoie la demande au serveur,Comment obtenir les données du côté serveur.Mais...AJAXDe
Politique d'Homologie,JSONPAppartient à une politique non homologue(Demandes transversales) - JSONPAvantages et inconvénients
JSONPL'avantage est une bonne compatibilité simple,Peut être utilisé pour résoudre les problèmes d'accès aux données inter - domaines des principaux navigateurs.L'inconvénient est qu'il ne supporte quegetFang
La loi a ses limites,L'insécurité peut souffrirXSSAttaque. - JSONPProcessus de mise en œuvre
- Déclarer une fonction de rappel,Son nom de fonction(Par exemple:show)Comme valeur du paramètre,Serveur à transmettre à la demande de données inter - domaines,Paramètre de fonction
Pour obtenir les données de destination(Serveur retournédata). - Créer un``Étiquettes,Prenez ce Cross - DomainAPIAdresse de l'interface de données,Assigner une valeur àscriptDesrc,Et dans cette adresse au serveur
Passez le nom de la fonction(Les paramètres peuvent être transmis par des points d'interrogation:?callback=show). - Après réception de la demande par le serveur,Traitement spécial requis:Assemblez le nom de la fonction passée avec les données qu'elle doit vous donner
String,Par exemple:Le nom de la fonction passée estshow,Les données qu'il a préparées sont: show(‘Je ne t'aime pas.’) . - Enfin, le serveur passe les données préparées à traversHTTPProtocole retourné au client,Le client rappelle la fonction de rappel précédemment déclarée pour l'exécution
(show),Manipulation des données retournées.
Vous pouvez rencontrer plusieurs JSONP Le nom de la fonction de rappel demandée est le même,À ce moment - là, vous devez vous encapsuler JSONP
Fonctions.
// index.html
function jsonp({
url, params, callback }) {
return new Promise((resolve, reject) => {
let script = document.createElement('script')
window[callback] = function(data) {
resolve(data)
document.body.removeChild(script)
}
params = {
...params, callback } // wd=b&callback=show
let arrs = []
for (let key in params) {
arrs.push(`${
key}=${
params[key]}`)
}
script.src = `${
url}?${
arrs.join('&')}`
document.body.appendChild(script)
})
}
jsonp({
url: 'http://localhost:3000/say',
params: {
wd: 'Iloveyou' },
callback: 'show'
}).then(data => {
console.log(data)
})
Le code ci - dessus est équivalent à http://localhost:3000/say?wd=Iloveyou&callback=show Nombre de demandes à cette adresse
Selon,Puis l'arrière - plan revient show(‘Je ne t'aime pas.’) ,Ça va finir par marcher.show()Cette fonction,Imprimer’Je ne t'aime pas.’
// server.js
let express = require('express')
let app = express()
app.get('/say', function(req, res) {
let {
wd, callback } = req.query
console.log(wd) // Iloveyou
console.log(callback) // show
res.end(`${
callback}('Je ne t'aime pas.')`)
})
app.listen(3000)
- jQueryDejsonpForme
JSONPTous.GETEt asynchrone,Il n'y a pas d'autre méthode de demande et de demande de synchronisation,EtjQueryPar défaut.JSONPDemande de nettoyage du cache pour.
$.ajax({
url:"http://crossdomain.com/jsonServerResponse",
dataType:"jsonp",
type:"get",//Peut être omis
jsonpCallback:"show",//->Personnaliser le nom de la fonction passée au serveur,Au lieu d'utiliserjQueryGénéré automatiquement,Peut être omis
jsonp:"callback",//->Le paramètre qui passe le nom de la fonctioncallback,Peut être omis
success:function (data){
console.log(data);}
});
边栏推荐
猜你喜欢

Day 13 of leetcode + day 3 of DL

After 3 months of job hunting, most resumes are dead in the sea. When it comes to manual testing, they shake their heads again and again ~ it's too difficult

Data storage and disaster recovery (2nd Edition) editor in chief Lu Xianzhi Wu Chunling comprehensive training answer

静态路由的原理和配置

源码编译装redis

wordpress中文网站代码下载

"Why do you want to resign, Tencent, which broke its head?"

VLAN和Trunnk

爬虫——有道翻译

Day 6 of DL
随机推荐
Decompose a number into the form of adding multiple addends
Set up in Jenkins to show the summary of allure Report
POI框架学习-导入导出案例
It's so delicious. I finally understand why so many people want to switch to software testing~
MySQL learning records
Dynamic open point segment tree
TCP protocol details
1、 Disk data recovery experiment report
wordpress中文网站代码下载
Attack and defense World Web
"Why do you want to resign, Tencent, which broke its head?"
Day 9 of leetcode question brushing
网络布线概述
Number system conversion and subnet Division
MATPLOTLIB—fail to allocate bitmap
几行代码就能实现复杂的 Excel 导入导出,这个工具类真心强大!
Dictionary tree
RAID磁盘阵列
文件管理-阿里云OSS学习(一)
64位整除乘法