jsonp跨域原理

jsonp之所以能跨域请求数据,它是通过script元素去请求过来的js代码,实际上我么用jsonp请求过啦的不是真正意义上的数据,而将服务器将数据转换成js代码,将其用一个函数包裹将其返回到客户端来运行,以此来解决跨域问题,但是是jsonp也是有缺陷的,jsonp只能用于get模式,而且这样服务器返回的数据很怪异
image.png

服务器实现jsonp

  1. router.get("/", async (req, res) => {
  2. const page = req.query.page || 1;
  3. const limit = req.query.limit || 10;
  4. const sex = req.query.sex || -1;
  5. const name = req.query.name || "";
  6. const result = await stuServ.getStudents(page, limit, sex, name);
  7. // 将数据json格式的字符串
  8. const json = JSON.stringify(result);
  9. // 将数据作为callback函数的参数
  10. const script = `callback(${json})`;
  11. // 将callback函数返回到客户端
  12. res.header("content-type", "application/javascript").send(script);
  13. });