• nodejs 框架 express 实现 jsonp跨域请求


    1、服务端代码

    let express=require('express')
    let app=express()
    app.get('/',(req,res)=>{
        let fn=req.query.callback  //fn='zl'
        let data=JSON.stringify({
            data:"hahaha"
        })
        res.end(fn+`(${data})`)
    })
    app.listen(80,()=>{
        console.log('serve is running...')
    })

    2、客户端代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script src="../../node_modules/jquery/dist/jquery.js"></script>
    </head>
    <body>
        <script type="text/javascript">
            function zl(res){
                console.log(res) //输出:{data:"hahaha"}
            }
        </script>
        <script src="http://localhost:80/?callback=zl"></script>
    </body>
    </html>

    执行过程如下:
    1、<script src="http://localhost:80/?callback=zl"></script>发送请求
    2、服务端收到请求let fn=req.query.callback此时fn的值就是’zl’
    3、服务端向客户端返回数据,经过字符串拼接,返回给客户端的其实是zl({data:“hahaha”})
    4、客户端收到服务端返回的内容:zl({data:“hahaha”})
    5、客户端将zl({data:“hahaha”})解析为调用了zl函数且入参为{data:“hahaha”},所以最终客户端打印了{data:“hahaha”}
    综上,其实jsonp的原理很简单,就是利用了script标签可以跨域请求这一特点,前端把方法作为参数传到服务端,然后服务端将数据作为方法的入参返回给前端,这样就能实现前后端通信。

    扩展

    使用ajax跨域:

    $.ajax({
        type: "GET",
        url: "http://localhost:80/",
        dataType: "jsonp",//  
        jsonp: "callback",//此参数的值与服务器端的req.query.callback对应
        success: function (data) {
            console.log(data)//输出:{data:"hahaha"}
        },
        error: function (err) {
            console.log(err)
            console.log('请求错误')
        }
    });


    ————————————————
    版权声明:本文为CSDN博主「ZLENGANG」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_43821923/article/details/110604419

  • 相关阅读:
    JS模板引擎 :ArtTemplate (2)
    JS模板引擎 :ArtTemplate (1)
    nodeJs 初探 ~
    javascript高级函数
    Js高程笔记->引用类型
    html5离线存储
    (摘抄)HTTP 协议详解
    cordova /phonegap 自定义插件
    phonegap/cordova常用命令
    phonegap上传以及下载图片
  • 原文地址:https://www.cnblogs.com/liangziaha/p/15269980.html
Copyright © 2020-2023  润新知