首页 > 其他分享 >web服务器15 jsonp格式接口

web服务器15 jsonp格式接口

时间:2022-11-03 14:22:50浏览次数:90  
标签:web JSONP const app express 接口 jsonp 15

概念:浏览器端通过<script>标签的src属性,请求服务器上的数据,同时,服务器返回一个函数的调用。这种请求数据

的方式叫做SONP。
特点:
①JSONP不属于真正的Ajax请求,因为它没有使用XMLHttpRequest这个对象。
②JSONP仅支持GET请求,不支持POST、PUT、DELETE等请求。

如果项目中已经配置了CORS跨域资源共享,为了防止冲突,必须在配置CORS中间件之前声明SONP的接口。否则
JSONP接口会被处理成开启了CORS的接口。示例代码如下:

实现JSONP接▣的步骤
    1获取客户端发送过来的回调函数的名字
    2得到要通过JSONP形式发送给客户端的数据
    3根据前两步得到的数据,拼接出一个函数调用的字符串
    4把上一步拼接得到的字符串,响应给客户端的<script>标签进行解析执行

  

const express = require('express')
const app = express()
const rou = require('./api')
const cors = require('cors')
app.get('/api/jsonp', (req, res) => {
    // TODO:定义jsonp接口的具体实现过程
    // 1得到函数的名称
    const funcName = req.query.callback
    // 2,定义要发送到客户端的对象
    const data = {
        name: 'zs',
        age: 23
    }
    // 3,拼接出一个函数的调用 把data转成json的格式
    const scriptStr = `${funcName}(${JSON.stringify(data)})`
    // 4,把拼接的字符串响应给客户端
    res.send(scriptStr)
})
// 解决跨域问题
app.use(cors())
// 配置解析application/json格式
app.use(express.json())
// 配置解析application/x-www-form-urlencoded格式
app.use(express.urlencoded({ extended: false }))

app.use('/api', rou)

app.listen(8080, () => {
    console.log('express serve running at http://127.0.0.1')
})

  

<!DOCTYPE html>

<html lang="en">

<head>
	<meta charset="utf-8" />
	<title>node接口测试</title>
    <meta name="vierport" content="width=device-width,initial-scale=1.0" />
</head>
<script src="https://cdn.staticfile.org/jquery/3.6.1/jquery.min.js"></script>
<body>
    <button id="jsonGet">json</button>
    <script>
        $(function(){
            $('#jsonGet').on('click',function(){
                $.ajax({
                    method:'GET',
                    url:'http://127.0.0.1:8080/api/jsonp',
                    dataType:'jsonp',
                    success:function(res){
                        console.log(res);
                    }
                })
            })
        })
    </script>
</body>
</html>

  

标签:web,JSONP,const,app,express,接口,jsonp,15
From: https://www.cnblogs.com/wencaiguagua/p/16854252.html

相关文章

  • WebSocket C#服务器端 当网页刷新时出现无法重连 C#出错:数字小于数组在第一维的下限。
    最近两天公司 要用到 WebSocketC#服务器端+Vue客户端我之前做 WebSocket 是 C#服务器端+原生js客户端原生js客户端 我用iframe 将 WebSocket 用单独一个网......
  • web服务器14 cors跨域资源共享
    通过控制Access-Control-Allow-Origin修改只有哪些网页可以访问资源res.setHeader('Access-Control-Allow-Origin','*')默认情况下,CORS仅支持客户端向服务器发送如下的9......
  • WebSocket C#服务器端+VUE客户端
    WebSocketC#服务器端先定义一个基类注:用于和WinSocket融合。当然不用也是可以的clsSocketusingSystem;usingSystem.Collections.Generic;usingSystem.Text;na......
  • web服务器13 接口
    主体constexpress=require('express')constapp=express()constrou=require('./api')//处理POST方法必写//配置解析application/json格式app.use(express.......
  • WEB、Internet、WAN、LAN
    WEBWEB(WorldWideWeb)即全球广域网,也称为万维网,它是一种基于超文本和HTTP协议的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务......
  • Netty+WebSocket 获取火,币交易所数据项目
    先附上项目项目GitHub地址 spring-boot-netty-websocket-huobi项目简介本项目使用 SpringBoot+Netty来开发WebSocket服务器,与火币交易所Websocket建立连接,时时获取火......
  • 代码随想录算法训练营第八天|344、反转字符串|541、反转字符串Ⅱ|剑指Offer 05、替换
    344、反转字符串·两两交换给字符串翻个面doge题目链接:https://leetcode.cn/problems/reverse-string/submissions/思路:首尾交换代码实现:     时间复杂度O(n......
  • 代码随想录Day15
    二叉树迭代遍历:递归遍历是从后往前推,迭代遍历是从前往后推。例如前序遍历:中左右。我们用栈来实现迭代遍历的时候,由于栈是先进后出,压入栈的时候的顺序是中右左。//前序......
  • JAVAWeb - JSP标签
    一:EL 表达式获取数据执行运算获取web开发的常用的对象二:JSP标签<jsp:forwardpage="/jsptag2.jsp"><jsp:paramname="name"value="maming"></jsp:param>......
  • 【Web】ES6新特性
    ECMAScript简介ECMAScript6.0,简称ES6。ECMAScript是一种由ECMA国际通过ECMA-262标准化的脚本,为JavaScript语言的下一代标准,在2015年6月正式发布。类比于......