Java, Android, разрешить URL, перенаправить URI - PullRequest
12 голосов
/ 05 марта 2011

У меня есть защищенный URL-адрес для аутентификации: www.domain.com/alias

что при запросе вернет другой URL: www.another.com/resource.mp4 (не защищен)

Я хотел бы знать, существует ли в Java метод, который будет возвращать реальный URL из заданного. Что-то вроде: секунда = разрешение (первая)

Я подумываю о загрузке первого и пытаюсь прочитать в ответ, может быть, атрибут location, но, поскольку я не являюсь гуру Java, я хотел бы знать, сталкивается ли Java уже с этим.

Ответы [ 2 ]

45 голосов
/ 05 марта 2011

Это проблема, с которой я сталкивался при переадресации URL.Попробуйте следующий код:

URL url = new URL(url);
HttpURLConnection ucon = (HttpURLConnection) url.openConnection();
ucon.setInstanceFollowRedirects(false);
URL secondURL = new URL(ucon.getHeaderField("Location"));
URLConnection conn = secondURL.openConnection();

"Волшебство" здесь происходит в эти 2 шага:

ucon.setInstanceFollowRedirects(false);
URL secondURL = new URL(ucon.getHeaderField("Location"));

По умолчанию InstanceFollowRedirects установлены в true, но вы хотите установить в falseзахватить второй URL.Чтобы иметь возможность получить этот второй URL-адрес из первого URL-адреса, необходимо получить поле заголовка с именем «Location».

0 голосов
/ 08 сентября 2016

Я устранил эту проблему на сайтах, где у нас есть маршрутизатор MikroTik, используя фильтр протокола уровня 7, как показано ниже. Это не помогает устройствам отключиться от сети 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, также могут блокировать эти перенаправления аналогичным образом.

...