美文网首页http
九种跨域解决方案使用示例(1)-jsonp

九种跨域解决方案使用示例(1)-jsonp

作者: 水流云间 | 来源:发表于2019-02-23 09:40 被阅读0次

jsonp原理

利用script标签没有跨域限制的漏洞,网页可以从其他来源动态生成的json.

jsonp优缺点

优:兼容性好
:仅支持 get 方法

jsonp实现流程

  1. 声明一个回调函数(callback),其函数名当做参数,传给需要跨域访问的服务端,服务端将目标数据当做形参返回给客户端
  2. 客户端创建script标签,并在script标签地址上带上?callback=xxx
  3. 服务端将传过来的函数名与需要返回的数据进行字符串拼接,如show('helloworld')
  4. 客户端声明回调函数的方法,并调用

前端页面:

function createJsonP(url, data, callback) {
      return new Promise((resolve, reject) => {
        // 生成script标签
        let eScript = document.createElement('script');
        const eBody = document.body;
        let params = [];

        window[callback] = function(data) {
          resolve(data);
          // 完成后移除script标签
          eBody.removeChild(eScript);
        };

        eScript.id = new Date().getTime();
        for(let i in data) {
          params.push(`${i}=${data[i]}`);
        }
        params = params.join('&');
        eScript.src = `${url}?${params}&callback=${callback}`;

        // 插入body
        eBody.appendChild(eScript);
      });
    }

    createJsonP('/test', {
      username: 'admin',
      pass: '123',
    }, 'show').then((data) => {
      console.log(data); // 用户名是:admin, 密码是:123
    });

server端(以nodejs为例):

const express = require('express');

const app = express();

app.get('/test', (req, res) => {
  const {username, pass, callback } = req.query;
  res.end(`${callback}('用户名是:${username}, 密码是:${pass}')`);
});

app.listen(1828);

相关文章

  • 跨域解决方案

    跨域解决方案 跨域解决方案有:设置document.domain,使用带src标签,JSONP,navigatio...

  • 前端如何解决常见跨域问题

    跨域解决方案 1、 通过jsonp跨域 2、 document.domain + iframe跨域 3、 loca...

  • ajax跨域请求

    ajax跨域请求(jsonp) 利用JSONP解决AJAX跨域问题的原理与jQuery解决方案JSONP jQue...

  • ajax跨域请求问题的五种解决方案

    ajax跨域请求问题的五种解决方案 方案一: 使用跨域资源共享代理(corsproxy) 方案二: 使用jsonp...

  • 复习jsonp和promise

    一.jsonp 1.jsonp是跨域访问api,ajax不能跨域 2.在vue中使用jsonp首先要安装jsonp...

  • 对jsonp 的理解认识

    什么是跨域?为什么要跨域呢?听说jsonp能. 为什么jsonp能跨域呢?什么时候使用jsonp?怎么使用json...

  • 结合Promise 封装JSONP方法

    jsonp jsonp是一种前端开发中跨域的解决方案。利用了script 标签可以跨域请求的特性。实现步骤: 1....

  • 跨域的解决方案

    跨域的解决方案script,img,link,iframe,不存在跨域请求限制。1、JSONP, 客户端向服务器发...

  • 跨域的4种实现方式

    1.使用JSONP实现跨域 HTML代码 server.js 2.使用CORS实现跨域 html代码 server...

  • 跨域

    博客 说说跨域那些事儿 不要再问我跨域的问题了 前端常见跨域解决方案(全) 同源策略 JSONP(填充式JSON)...

网友评论

    本文标题:九种跨域解决方案使用示例(1)-jsonp

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