laravel 远程服务器获取图片,解决前端显示图片跨域问题

由于前端页面需要显示别个服务器的图片,出现跨域问题,解决办法,后端获取图片流,在本地服务器上过,再给前端显示,目前的解决办法是获取之后以base64图片流或者返回二进制返回,前端使用方式和一般请求图片一样请求接口。
guzzle的中文文档:http://guzzle-cn.readthedocs.io/zh_CN/latest/
官方:https://packagist.org/packages/guzzlehttp/guzzle-services

laravel 5.3,使用composer 安装

 "require": {
      "guzzlehttp/guzzle": "^6.3"
  }

具体实现

 use GuzzleHttp\Client;

 try {
       $url = "http://q1.qlogo.cn/g?b=qq&nk=$qq&s=100";
       $client = new Client(['verify' => false]);
       $data = $client->request('get', $url)->getBody()->getContents();
       return response($data, 200, [
           'Content-Type' => 'image/png',
       ]);
   } catch (RequestException $e) {
       $default = file_get_contents(storage_path('default/qq-default.png'));
       return response($default, 200, [
           'Content-Type' => 'image/png',
       ]);
   }

前端请求方式

<img src="http://test.com/api/test" alt="">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAV4AAAFeCAMAAAD...">#base64后显示超级长
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值