Когда веб-браузер не основан на стандартах? Когда это делает Apple. Правильно ли разработчик браузера решать, какие стандарты внедрять? Apple твердо убеждена в том, что она может выбирать.
В этом вопросе можно быть по обе стороны забора — Apple просто использует предлоги для того, чтобы не внедрять некоторые стандарты, которые работают против ее прибыли, или Apple глубоко заботится о своих пользователях и не внедряет некоторые стандарты для их защиты. Однако стандарты являются их стандартами, поэтому мы можем писать веб-страницы и веб-приложения, которые, как мы можем ожидать, будут работать во всех браузерах. Это не относится к Safari / webkit, поскольку Apple только что объявила, что не будет поддерживать:
Интернет Bluetooth
Веб-MIDI API
API магнитометра
Веб-API NFC
API памяти устройства
API сетевой информации
API статуса батареи
Датчик освещенности
Расширение HDCP Policy Check для EME
Датчик приближения
WebHID
Последовательный API
Веб-USB
Датчик геолокации (фоновая геолокация)
Обнаружение простоя пользователя
Все совершенно законные стандарты. У вас могут быть опасения по поводу некоторых из них — честно говоря, меня пугают Web Bluetooth и Web USB, но браузер делает их безопасными для использования. Мое мнение не имеет значения в этом и в других, которые я использовал, API Magnetometer, API состояния батареи и обнаружение простоя пользователя, и я разочарован и обеспокоен тем, что Apple решила не запускать мои одностраничные приложения под Webkit.
Дело в том, что как бы я ни относился к каждому из API, на самом деле не мне или Apple решать, какие стандарты являются «достаточно безопасными» и достаточно важными, чтобы их можно было реализовать. Имейте в виду, что Webkit — единственный движок рендеринга, разрешенный на устройствах Apple.
Стандарты есть стандарты.
Apple утверждает, что именно эти API-интерфейсы упрощают снятие отпечатков пальцев и, следовательно, они не реализуют их, чтобы сделать своих пользователей более безопасными. Конечно, каждый из этих API-интерфейсов можно использовать для идентификации браузера в определенном контексте, но есть и другие. Вы можете сделать так, чтобы, если вы не хотите, чтобы вас брали отпечатки пальцев, не используйте браузер любого описания, потому что почти всегда можно найти некоторую идентифицирующую характеристику, порожденную эффектами конфигурации системы и прошлой истории.
Apple также удаляет существующие функции — пользовательские шрифты, дополнительные номера версий и, как ни странно, флаг «не отслеживать». Более удивительно:
Трекеры, выполняющие скрипт в собственном контексте, часто используют собственное хранилище для сохранения и вызова информации межсайтового отслеживания. Таким образом, ITP ограничивает срок действия всех файлов cookie, созданных в JavaScript, до 7 дней и удаляет все остальное хранилище с возможностью записи через скрипт после 7 дней отсутствия взаимодействия пользователя с веб-сайтом. Последние формы хранения:
IndexedDB
LocalStorage
Клавиши мультимедиа
SessionStorage
Регистрации и кеширование Service Worker
Более циничная точка зрения состоит в том, что чем больше таких API Webkit отказывается поддерживать, тем больше веб-приложений должно стать нативными приложениями для выполнения своей работы, и чем больше нативных приложений будет, тем больше денег будет зарабатывать Apple.
Сделать стандарты браузера Webkit несовместимыми — хороший способ защитить App Store и остановить продвижение веб-приложения. Интересно, что Apple решает проблему 7-дневного ограничения на хранение PWA. Если вы добавите PWA (прогрессивное веб-приложение) на главный экран, то для хранилища, которое оно использует, не будет применяться 7-дневный лимит.
Однако, даже если Apple пытается защитить своих пользователей, это не способ делать работу. Он должен был действовать на опережение до того, как были установлены стандарты. Как только стандарты будут установлены, Apple, как и другим разработчикам браузеров, следует искать способы реализации API таким образом, чтобы они были защитными, но при этом работали в рамках стандарта. Чего производитель браузеров ни по какой причине не должен делать, так это выбирать, какие стандарты внедрять, особенно когда он имеет монополию на определенную платформу.