Как использовать функцию noreferrer с window.open и получить ненулевую ссылку на дочернее окно?

#javascript #dom

#javascript #dom

Вопрос:

Я хотел бы программно открыть новое окно (т.Е. Через window.open ) и Изменить содержимое без

  • я становлюсь уязвимым для обратного ввода табуляции через ненулевое window.opener значение в дочернем окне
  • утечка потенциально конфиденциальных URL-адресов или параметров запроса через Referer заголовок

Использование noreferrer функции (т. Е. window.open(url, target, "noreferrer") ) Казалось самым простым вариантом, но в соответствии со спецификацией (см. Шаг 15) это всегда приведет к возвращаемому значению null .

Есть ли способ открыть новое окно без передачи Referer заголовка, установить opener значение null и по-прежнему иметь ненулевую ссылку на открытое окно?

Комментарии:

1. искренне интересует 2 / работает ли политика реферера для window.open вызовов.

Ответ №1:

 var otherWindow = window.open();
otherWindow.opener = null;
otherWindow.location = targetUrl;
  

Комментарии:

1. opener доступно даже в окнах с разными источниками: html.spec.whatwg.org/multipage/… Так что вы даже можете сделать var otherWindow = window.open(targetUrl); otherWindow.opener = null;

2. На самом деле это не работает, потому что, как указано, я также хочу избежать отправки Referer заголовка. Когда вы устанавливаете местоположение в окне, Referer заголовок будет отправлен с URL родительского окна.

3. @MichaelWu не уверен, есть ли решение