您的位置:首页 > 编程语言 > PHP开发

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

2018-01-18 19:00 2586 查看
由于前端页面需要显示别个服务器的图片,出现跨域问题,解决办法,后端获取图片流,在本地服务器上过,再给前端显示,目前的解决办法是获取之后以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后显示超级长
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐