<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地址呢?
<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地址呢?
给你个思路
1.获取地址后加载图片然后header头输出图片
2.在加载img之前就通过api接口获取地址
$imageSrc=api('xxxx');
<img src="<?=$imageSrc?>">
如果说你想要在浏览器端获取这个真实地址,也就是重定向之后的那个url,好像没什么办法可以拿到,反正我想不到办法可以取到location的值(浏览器端的情况下)。
首先你可以知道,这个接口返回的如果直接就是图片文件的话,那很简单,真实地址就是:http://tu.hanximeng.com/api.php
但是你请求这个接口,看一下http响应的内容就知道,这个接口返回了一个指向真实图片地址的重定向。
而浏览器对于302状态码会自动再发起一次请求去请求这个定义在响应头location字段里的url
所以,如果抛开浏览器这个环境去请求这个接口,就可以直接获取响应头里的location值了,比如你用node啦、php啦等等后端语言去对这个接口发起一次http请求,就可以直接去获取图片真实地址了,因为默认它们不会像浏览器一样直接强制重定向~
2 回答1.5k 阅读✓ 已解决
2 回答928 阅读✓ 已解决
1 回答941 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
3 回答1.1k 阅读
2 回答803 阅读
1 回答807 阅读✓ 已解决
既然是在img标签的src属性了,就一定是一个图片,否则不会显示出来,所以你要的实际地址就是这个地址,至于是否这个php在服务器端做了什么操作(比如把某个别的位置的图片拿过来,或者从数据库里去取出二进制内容转换为图片返回给前台),这些对前台是不透明的,前端是不知道这些操作的,更拿不到服务器端图片文件的存储地址。