Могу ли я безопасно заблокировать запросы агента браузера Dalvik?
Я заметил, что когда пользователи на устройствах Android-OS посещают мой сайт, на каждой странице постоянно происходит два запроса. Первый - это обычный браузер, а второй - от "Dalvik". Пример:
"GET / HTTP / 1.1" 200 2126 "-" "Mozilla / 5.0 (Linux; Android 5.0.2; SAMSUNG SM-G925F / G925FXXU1AOD8 Build / LRX22G) AppleWebKit / 537.36 (KHTML, как Gecko) SamsungBrowser / 3.0 Chrome / 38.0. 2125.102 Mobile Safari / 537.36 "1229 2802
"GET / HTTP / 1.1" 200 2117 "-" "Dalvik / 2.1.0 (Linux; U; Android 5.0.2; SM-G925F Build / LRX22G)" 546 8729
Насколько я понимаю, первый запрос поступает от реального браузера, а другой - от виртуальной машины (Dalvik), на которой запущен браузер. Проблема в том, что в запросе Dalvik не используются те же файлы cookie и / или данные POST, что вызывает ошибки на стороне сервера. Примером может быть, когда пользователь регистрирует учетную запись. Обычный браузер отправляет через POST-данные, но запрос Dalvik просто выполняет GET для URL-адреса действия. Точно так же, если пользователь вошел в систему, Dalvik попытается выполнить GET на странице, основанной на разрешениях, которая может перенаправить его куда-то еще, потому что для него нет сеанса.
Пользователь не испытывает никаких реальных проблем (насколько я могу судить), однако мы замечаем попытки в нашей регистрации ошибок. Поэтому мой вопрос: могу ли я безопасно заблокировать все попытки доступа, если агент браузера указывает "Dalvik /. *"? Будут ли какие-либо негативные последствия для пользователя? Учитывая, что запросы, связанные с Dalvik, на самом деле не передают реальные данные и не переносят сеанс, это кажется маловероятным. Но, надеясь, что кто-то с большим опытом работы с Android может предоставить некоторую обратную связь, например, должен ли я выдать определенный HTTP-заголовок / код состояния, такой как "401 Unauthorized" или "400 Bad Request"?
Любая помощь будет оценена.
1 ответ
Это происходит, когда браузер /WebView не может отобразить конкретный ответ сервера (может быть, это PDF-файл, потоковый сервер или что-то еще), а затем вызывает намерение операционной системы открыть другое приложение. Виртуальная машина (Dalvik) - это то, что обрабатывает эту маршрутизацию, и в процессе может загружать файл на устройство, чтобы другое приложение могло получить к нему доступ (обычно приложения не могут получить доступ к файлам друг друга, но другому приложению нужен файл для рендеринга. Это).
Важно отметить, что он загружает файл перед запуском намерения, и в итоге файл загружается дважды: один раз браузером, чтобы выяснить, что он не знает, как с ним обращаться, и один раз Dalvik, чтобы он мог передать
file://
URL-адрес приложения, которое вы можете запустить или не запустить.
Это оболочка Linux для телефонов Samsung. Моя ОС указана как "Linux 3.4.0-7500527 (Dalvik 2.1.0)", и это Samsung Galaxy S5. Не могли бы вы создать дубликат вашего сайта (даже минимальный) с получателями 501, возможно? С этим, это должно быть легко узнать.