Заголовок заголовка HTTP без ссылки click [duplicate]

Вы также можете распространять свою статическую боль с помощью lambdas, поэтому все это выглядит читаемым:

s.filter(a -> propagate(a::isActive))

propagate здесь принимает java.util.concurrent.Callable в качестве параметра и преобразует любое исключение, пойманное во время вызова в RuntimeException. Существует аналогичный метод преобразования Throwables # распространять (Throwable) в Guava.

Этот метод кажется необходимым для цепной связи лямбда, поэтому я надеюсь, что однажды он будет добавлен к одному из популярных libs или это распространяющееся поведение будет по умолчанию.

public class PropagateExceptionsSample {
    // a simplified version of Throwables#propagate
    public static RuntimeException runtime(Throwable e) {
        if (e instanceof RuntimeException) {
            return (RuntimeException)e;
        }

        return new RuntimeException(e);
    }

    // this is a new one, n/a in public libs
    // Callable just suits as a functional interface in JDK throwing Exception 
    public static  V propagate(Callable callable){
        try {
            return callable.call();
        } catch (Exception e) {
            throw runtime(e);
        }
    }

    public static void main(String[] args) {
        class Account{
            String name;    
            Account(String name) { this.name = name;}

            public boolean isActive() throws IOException {
                return name.startsWith("a");
            }
        }


        List accounts = new ArrayList<>(Arrays.asList(new Account("andrey"), new Account("angela"), new Account("pamela")));

        Stream s = accounts.stream();

        s
          .filter(a -> propagate(a::isActive))
          .map(a -> a.name)
          .forEach(System.out::println);
    }
}

124
задан Patrick McElhaney 9 December 2016 в 22:21
поделиться

4 ответа

Он будет / может быть пустым, когда enduser

  • сам ввел URL-адрес сайта в адресную строку браузера.
  • посетил сайт с помощью браузера. / g2]
  • посетил сайт как первую страницу в окне / tab.
  • щелкнул ссылку во внешнем приложении.
  • переключился с URL-адреса https на URL-адрес http.
  • переключился с URL-адреса https на другой URL-адрес https.
  • установлено программное обеспечение безопасности (антивирус / брандмауэр / etc), который удаляет реферер из всех запросов.
  • ] находится за прокси-сервером, который удаляет реферер из всех запросов.
  • посетил сайт программно (например, curl ) без установки заголовка реферера (поисковые роботы!).
215
ответ дан Marcello Mönkemeyer 19 August 2018 в 17:27
поделиться
  • 1
    Возможно, вам захочется добавить & quot;, когда пользователь переходит с защищенной (HTTPS) страницы на небезопасную. & Quot ;. – John Pick 3 April 2012 в 05:50
  • 2
    "посетил сайт как первую страницу в окне / вкладке. & quot; Даже если это было, нажав на ссылку и открыв ее в новом окне / вкладке? Ты уверен? Это было бы очень неправильное поведение браузера – matteo 25 March 2013 в 02:14
  • 3
    Любое обновление / ответ относительно комментария @matteo? – Ofir Baruch 22 July 2015 в 08:24
  • 4
    «переключается с URL-адреса https на другой URL-адрес https». Вы в этом уверены? : \ – Oscar Mederos 2 June 2016 в 05:10
  • 5
    По умолчанию переключение с URL-адреса HTTPS на другой URL-адрес HTTPS устанавливает полный референт. Однако эту политику по умолчанию можно переопределить. w3.org/TR/referrer-policy – Dhaval Kapil 3 February 2017 в 15:38

Он также будет пуст, если новый стандартный проект Referrer Policy используется, чтобы предотвратить отправку заголовка референта в начало запроса. Пример:

<meta name="referrer" content="none">

Хотя Chrome и Firefox уже внедрили черновик версии политики реферера, вы должны быть осторожны с ним, потому что, например, Chrome ожидает no-referrer вместо none (и у меня есть также видел never).

6
ответ дан Joel Richard 19 August 2018 в 17:27
поделиться

Список BalusC прочен. Еще один способ, которым это поле часто выглядит пустым, - это когда пользователь находится за прокси-сервером. Это похоже на то, что находится за брандмауэром, но немного отличается, поэтому я хотел упомянуть об этом ради полноты.

9
ответ дан Night Owl 19 August 2018 в 17:27
поделиться

HTTP_REFERER - отправлено браузером, указав последнюю просматриваемую страницу браузером!

Если вы доверяете [HTTP_REFERER] по какой-либо важной причине, вы не должны этого делать, поскольку это может быть легко сфальсифицировано: / g21]

  1. Некоторые браузеры ограничивают доступ, чтобы не разрешать передачу HTTP_REFERER
  2. Введите адрес в адресной строке, который не пройдет HTTP_REFERER
  3. , чтобы открыть новый браузер window не будет передавать HTTP_REFERER, потому что HTTP_REFERER = NULL
  4. имеет некоторый аддон браузера, который блокирует его по соображениям конфиденциальности. Некоторые брандмауэры и AV-файлы делают это.

Попробуйте это расширение Firefox, вы сможете установить любые заголовки, которые вы хотите:

@ Мастер празднования:

Firefox:

расширения: refspoof , refontrol , изменить заголовки , no-referer

Полностью отключить: этот параметр доступен в about: config в разделе «network.http.sendRefererHeader», и вы хотите установить это 0, чтобы отключить передачу референта.

Google chrome / Chromium:

расширения: noref , spoofy , external noreferrer

Полностью отключить: Chnage ~ / .config / google-chrome / Default / Preferences или ~ / .config / chromium / Default / Preferences и установите это:

{
   ...
   "enable_referrers": false,
   ...
}

Или просто добавьте --no-referrers в ярлык или в cli:

google-chrome --no-referrers

Opera:

Полностью отключить: Настройки> Настройки> Дополнительно> Сеть и снимите флажок «Отправить информацию о реферере»

Spoofin g веб-сервис:

http://referer.us/

Автономный прокси-сервер фильтрации (spoof any header):

Privoxy

Spoofing http_referer при использовании wget

'- referer = url'

Spoofing http_referer при использовании curl

-e, --referer

Spoofing http_referer wth telnet

telnet www.yoursite.com 80 (press return)
GET /index.html HTTP/1.0 (press return)
Referer: http://www.hah-hah.com (press return)
(press return again)
28
ответ дан ThatGuy 19 August 2018 в 17:27
поделиться
  • 1
    Tamper Data - это еще одно расширение Firefox, которое стоит посмотреть, если вы хотите играть с меняющимися значениями реферера. – Chris Hepner 30 July 2011 в 03:32
  • 2
    Я очень старался запомнить его имя. но моя память предал меня. Благодаря:) – ThatGuy 30 July 2011 в 03:35
  • 3
    @nix Some browsers limit access to not allow HTTP_REFERER to be passed Не могли бы вы назвать пример такого браузера и / или расширения? – Master of Celebration 15 May 2012 в 11:49
  • 4
    @MasterofCelebration добавила способы подделать http_referer в мой ответ. – ThatGuy 18 May 2012 в 19:54
  • 5
    Не используйте referer.us для подмены / скрытия вашего реферера! Он не работает и утечки вашей информации. Единственная работающая служба прямо сейчас - это бесплатный сервис hide referrer . – Brian Smith 30 March 2017 в 02:44
Другие вопросы по тегам:

Похожие вопросы: