Проблема защиты загрузки Google Chrome - PullRequest
0 голосов
/ 25 сентября 2018

Введение

Мы проводим интеграционные тесты с Google Chrome.Некоторые тесты загружают документы, и эти тесты иногда случайно не работают.После расследования мы обнаружили, что Chrome блокирует нашу загрузку, и это приводит к сбою теста, поскольку он ожидает успешную загрузку файла: enter image description here

При возникновении проблемы мы были сбиты с толку, потому что внаши тесты локальной среды были стабильны и никогда не давали результатов.

Минимальный воспроизводимый пример

Мы создаем минимальный воспроизводимый пример для этой проблемы.Он содержит простой Python HTTP-сервер, который обслуживает один пустой файл document.xml и возвращает его со следующими заголовками:

Content-type: application/xml
Content-disposition: attachment; filename=document.xml

Когда мы запускаем Google Chrome и пытаемся загрузить этот файл, он просто блокирует процесс с уведомлением This type of file can harm your computer....

Если мы попытаемся снова щелкнуть ссылку, Chrome внезапно загрузит файл без каких-либо предупреждений (вы можете увидеть это на скриншоте).

Наши попытки решить проблему

Мы пытаемся отключить это поведение с помощью параметра командной строки --safebrowsing-disable-download-protection, а также пытаемся установить --safebrowsing.enabled=false, но ничего не меняется.

Кроме того, мы пытаемся вручную включить / отключить некоторые флаги из chrome://flags:

  • #disallow-unsafe-http-downloads - установить на Отключено
  • #allow-insecure-localhost - установить на Включено

Но ситуация все та же.

После этого мы смотрим журналы Chrome, о которых сообщалось со следующими параметрами командной строки: --enable-logging -v=2, но прямой подсказки о решении проблемы нет.проблема:

network_delegate.cc(32)                 NetworkDelegate::NotifyBeforeURLRequest: http://localhost:8000/document.xml
network_delegate.cc(32)                 NetworkDelegate::NotifyBeforeURLRequest: http://localhost:8000/document.xml
network_delegate.cc(32)                 NetworkDelegate::NotifyBeforeURLRequest: http://localhost:8000/document.xml
network_delegate.cc(32)                 NetworkDelegate::NotifyBeforeURLRequest: http://localhost:8000/document.xml
network_delegate.cc(32)                 NetworkDelegate::NotifyBeforeURLRequest: http://localhost:8000/document.xml
prescient_networking_dispatcher.cc(19)  Prefetch DNS: localhost
prescient_networking_dispatcher.cc(19)  Prefetch DNS: localhost
prescient_networking_dispatcher.cc(19)  Prefetch DNS: localhost
loader_util.cc(45)                      To buffer: http://localhost:8000/document.xml
navigator_impl.cc(140)                  Failed Provisional Load: http://localhost:8000/document.xml, error_code: -3, error_description: The webpage at <strong jscontent="failedUrl"></strong> might be temporarily down or it may have moved permanently to a new web address., showing_repost_interstitial: 0, frame_id: 4
prescient_networking_dispatcher.cc(19)  Prefetch DNS: 
network_delegate.cc(32)                 NetworkDelegate::NotifyBeforeURLRequest: https://sb-ssl.google.com/safebrowsing/clientreport/download?key=[some key]
network_delegate.cc(32)                 NetworkDelegate::NotifyBeforeURLRequest: https://sb-ssl.google.com/safebrowsing/clientreport/download?key=[some key]
network_delegate.cc(32)                 NetworkDelegate::NotifyBeforeURLRequest: https://sb-ssl.google.com/safebrowsing/clientreport/download?key=[some key]
network_delegate.cc(32)                 NetworkDelegate::NotifyBeforeURLRequest: https://sb-ssl.google.com/safebrowsing/clientreport/download?key=[some key]

Заключение

Наконец, у нас возникла проблема защиты загрузки с Google Chrome, который работает только при первой попытке загрузки.Такое поведение может быть воспроизведено после перезапуска Chrome (примечание: предпочтения пользовательских данных остаются без изменений после перезапуска, поэтому это странное поведение возникает только из-за внутреннего состояния Chrome).

Может кто-нибудь описать это странное поведение Chrome и предложить некоторыеРешение этой проблемы?

Наша конфигурация: Google Chrome 69.0.3497.92, Windows Server 2012 R2, version 6.3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...