我有受身份验证的网址:www.domain.com/alias
如果要求将返回另一个网址:www.another.com/resource.mp4(未受保护)
我想知道Java中是否存在一个方法,它将返回给定的url。 类似于:second = resolve(first)
我正在考虑加载第一个并尝试读取响应可能是location属性,但由于我不是java大师,我想知道Java是否已经面临这个。
答案 0 :(得分:45)
这是我过去常常遇到的有关网址重定向的问题。请尝试以下代码:
URL url = new URL(url);
HttpURLConnection ucon = (HttpURLConnection) url.openConnection();
ucon.setInstanceFollowRedirects(false);
URL secondURL = new URL(ucon.getHeaderField("Location"));
URLConnection conn = secondURL.openConnection();
这里的“神奇”发生在以下两个步骤中:
ucon.setInstanceFollowRedirects(false);
URL secondURL = new URL(ucon.getHeaderField("Location"));
默认情况下,InstanceFollowRedirects设置为true,但您希望将其设置为false以捕获第二个URL。为了能够从第一个URL获取第二个URL,您需要获取名为“Location”的标题字段。
答案 1 :(得分:0)
我已经通过使用第7层协议过滤器在我们拥有MikroTik路由器的网站上消除了这个问题,如下所示。这显然不能帮助设备远离WiFi网络,但至少在他们连接到家庭和/或工作WiFi网络时给他们一些缓解。
首先,创建协议定义:
/ip firewall layer7-protocol
add comment="Frigging javascript redirects on chrome browsers" \
name=Javascript_Redirect \
regexp="^.+(spaces.slimspot.com|mostawesomeoffers.com).*\$"
现在,要实际过滤此流量
/ip firewall filter
add action=drop chain=forward comment=\
"Block and log Javascript_Redirect L7 Protocol" layer7-protocol=\
Javascript_Redirect log=yes log-prefix=JSredirect_
具有第7层过滤能力的其他防火墙也可以以类似的方式阻止这些重定向。