在某个 video 节点中有个视频 URL :
<video preload="auto" width="100%" height="100%">
<source src="http://www.example.com/1.mp4" type="video/mp4" label="360p" res="360">
</video>
但这个 URL 在请求的时候服务器会返回一个 302 ,以及一个 location header ,所以它会被重定向到另一个不同域名的 URL 。
那么问题来了,如何用 javascript 获得这个重定向后的 URL ?
1
hanzichi 2017-01-28 20:05:51 +08:00
JS 能获取嘛?抓包吧?
坐等大神 |
2
exoticknight 2017-01-28 20:27:49 +08:00
node 的话你用的库应该会提供查看 header 的功能吧
AJAX 就没办法了, follow redirect 是浏览器的行为,对 AJAX 是透明的 |
3
exoticknight 2017-01-28 20:30:24 +08:00
查了一下 fetch ,似乎可以处理诶、
https://fetch.spec.whatwg.org/#concept-request-redirect-mode |
4
heimeil 2017-01-28 20:46:15 +08:00 via Android
js 获取到 src 再用 HEAD 请求拿到 header 里的 location ,看看这办法合适不
|
5
binux 2017-01-28 21:35:24 +08:00 via Android
跨域吗
|
6
panyanyany OP r#3 @exoticknight 我看到这一条,似乎意思是说不允许用 js 看到 redirect 的信息 https://fetch.spec.whatwg.org/#atomic-http-redirect-handling
|
7
panyanyany OP r#4 @heimeil 这个也是不行的,同样会因为跨域的原因导致失败。我查了下,貌似是说不允许用 js 拿到 redirect 信息,会有被攻击的风险。
|
8
panyanyany OP r#5 @binux 是的,我查了下资料,不允许用 js 拿到 redirect 的信息……
|
9
SoloCompany 2017-01-28 22:29:09 +08:00
|
10
nfroot 2017-01-29 11:03:15 +08:00
简单,用任何一个后端语言探测一下就有了。
|
11
lslqtz 2017-01-30 07:38:47 +08:00 via iPhone
我想知道用扩展怎么抓...
|
12
lslqtz 2017-01-30 07:49:29 +08:00 via iPhone
@panyanyany 客户端请求,服务器获得重定向的 url 也可以,或者扩展...
|
13
mkb 2018-08-30 16:36:52 +08:00
不允许 js 获取重定向 url 是浏览器设置的,理论上 js 可以做到,只是浏览器不允许,所以只需要关闭浏览器的跨域安全性检查,或者直接用无头浏览器 phantomjs,这个浏览器不会显示界面,也可以很方便的关闭跨域安全性检查。
|