如何获取img图片的实际返回值地址?

linkstar
  • 705
<img class="lazy" src="http://tu.hanximeng.com/api.php" data-original="http://tu.hanximeng.com/api.php" style="border-radius: 10px; display: inline;" width="100%">

比方说这个,src是一个php请求接口,这样通过img返回的实际图片地址获取不到,请问怎么样才能获得真实的img地址呢?

回复
阅读 2.8k
3 个回答

既然是在img标签的src属性了,就一定是一个图片,否则不会显示出来,所以你要的实际地址就是这个地址,至于是否这个php在服务器端做了什么操作(比如把某个别的位置的图片拿过来,或者从数据库里去取出二进制内容转换为图片返回给前台),这些对前台是不透明的,前端是不知道这些操作的,更拿不到服务器端图片文件的存储地址。

给你个思路
1.获取地址后加载图片然后header头输出图片
2.在加载img之前就通过api接口获取地址

$imageSrc=api('xxxx');
 <img src="<?=$imageSrc?>">

如果说你想要在浏览器端获取这个真实地址,也就是重定向之后的那个url,好像没什么办法可以拿到,反正我想不到办法可以取到location的值(浏览器端的情况下)。

首先你可以知道,这个接口返回的如果直接就是图片文件的话,那很简单,真实地址就是:http://tu.hanximeng.com/api.php

但是你请求这个接口,看一下http响应的内容就知道,这个接口返回了一个指向真实图片地址的重定向。

0060lm7Tly1fus1o69ssoj30m20djaak.jpg

而浏览器对于302状态码会自动再发起一次请求去请求这个定义在响应头location字段里的url

所以,如果抛开浏览器这个环境去请求这个接口,就可以直接获取响应头里的location值了,比如你用node啦、php啦等等后端语言去对这个接口发起一次http请求,就可以直接去获取图片真实地址了,因为默认它们不会像浏览器一样直接强制重定向~

你知道吗?

宣传栏