码迷,mamicode.com
首页 > Web开发 > 详细

使用图片跨域方式获取图片数据 使用 jsonp 方式跨域获取数据

时间:2020-02-13 15:24:36      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:isp   asi   anon   color   cot   wrap   ocm   sans   otto   

使用图片跨域方式获取图片数据


server.get(`/mockImg`, (req, res, next) => { // 使用图片跨域方式获取图片数据
  req.headers.origin && res.setHeader(`Access-Control-Allow-Origin`, req.headers.origin)
  res.setHeader(`content-type`, `image/gif`)
  res.setHeader(`data`, `image/gif`)
  var b64string = ‘R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=‘
  var buf = Buffer.from(b64string, ‘base64‘);
  res.send(buf)

  function getImgBase64(api) {
    return new Promise((resove, reject) => {
      var img = new Image();
      img.setAttribute(‘crossorigin‘, ‘anonymous‘)
      img.onload = () => {
        function getBase64Image(img) {
          var canvas = document.createElement(‘canvas‘)
          var ctx = canvas.getContext(‘2d‘)
          ctx.drawImage(img, 0, 0)
          return canvas.toDataURL()
        }
        resove(getBase64Image(img))
      }
      img.onerror = err => reject(err)
      img.src = api
    })
  }
  // getImgBase64(`http://localhost:9001/api/t/mockImg`)
})

使用 jsonp 方式跨域获取数据


server.get(`/jsonp`, (req, res, next) => { // 使用 jsonp 方式跨域获取数据
  const {cb} = require(‘querystring‘).parse(req.url.replace(/.*\?/, ‘‘))
  res.send(`${cb}({a:1})`)
  function jsonp(api, cb) { // 从 jsonp 中获取数据
    return new Promise((resove, reject) => {
      const cbName = `jsonp${Date.now()}${String(Math.random()).slice(2)}`
      window[cbName] = res => {cb && cb(res); resove(res)}
      const src = `${api}${api.includes(‘?‘) ? ‘&‘ : ‘?‘}cb=${cbName}`
      const script = document.createElement(‘script‘)
      script.setAttribute(‘crossorigin‘, ‘anonymous‘)
      script.src = src
      script.onload = () => {
        const script = document.querySelector(`script[src*="${cbName}"]`)
        script.remove()
        delete window[cbName]
      }
      script.onerror = err => reject(err)
      document.body.append(script)
    })
  }
  // jsonp(`http://localhost:9001/api/t/jsonp`)
})
?

使用图片跨域方式获取图片数据 使用 jsonp 方式跨域获取数据

标签:isp   asi   anon   color   cot   wrap   ocm   sans   otto   

原文地址:https://www.cnblogs.com/daysme/p/12303261.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!